Java8(六) Optional

Optional#

Optional 类是一个可以为null的容器对象。可以很好的解决空指针异常。

1 创建Optional对象#

创建一个空的Optional对象

Copy

Optional<String> empty = Optional.empty();

创建一个非空的Optional对象

Copy

Optional<String> test = Optional.of("test");

创建一个即可空又可非空的Optional对象

Copy

Optional<Object> object = Optional.ofNullable(null);

2 常见操作#

isPresent()

Copy

//判断是否为null

Optional<Object> object = Optional.ofNullable(null);

if (object.isPresent()) {

    System.out.println(123);

}

get()

Copy

//如果Optional有值则将其取出,否则抛出NoSuchElementException。

Optional<String> test = Optional.ofNullable("test");

if (test.isPresent()) {

    String s = test.get();

    System.out.println(s);

}

ifPresent()

Copy

//如果Optional实例有值则调用传入的Lambda表达式,否则不做处理

Optional<String> test = Optional.ofNullable("test");

test.ifPresent(System.out::println);

orElse()

Copy

//如果有值则将其返回,否则返回指定的其它值。

Optional<String> test = Optional.empty();

System.out.println(test.orElse("哈哈哈哈"));

orElseGet()

Copy

//与orElse方法类似,但orElse只能传入Optional泛型中的对象

//orElseGet方法可以接受Supplier接口的实现来生成默认值

Optional<String> test = Optional.empty();

test.orElseGet(() -> "123");

map()

Copy

//如果有值,则对其执行调用mapping函数得到返回值。如果返回值不为null,则创建包含mapping返回值的Optional作为map方法返回值,否则返回空Optional。

Optional<String> test = Optional.of("12");

Optional<String> s = test.map(x -> x + "12");

s.ifPresent(System.out::println);

flatmap()

Copy

//与map方法类似,区别在于mapping函数的返回值不同。map方法的mapping函数返回值可以是任何类型T,而flatMap方法的mapping函数必须是Optional。

Optional<String> test = Optional.of("12");

Optional<String> s = test.flatMap(x -> Optional.of(x + "12"));

s.ifPresent(System.out::println);

filter

Copy

//如果有值并且满足断言条件返回包含该值的Optional,否则返回空Optional。

Optional<Integer> integer = Optional.of(12);

Optional<Integer> integer1 = integer.filter(i -> i > 6);

integer1.ifPresent(System.out :: println);

深圳网站建设www.sz886.com

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容