首页 > 代码库 > 【Java8】Optional
【Java8】Optional
Optional
Optional简述
按照字面意思的理解,应该可选的意思。一开始我还以为是类似python里面的默认参数用法呢,结果语义是指某个值可能有也可能没有(null)。
感觉名字取得不是很直观。。我觉得叫Nullable不是更好?
python:
def fn(a=‘default_value‘): print(a) pass
Optional方法
Optional没有公开的构造方法,只有静态工厂方法:
Optional<String> optional_2 = Optional.of(str); // 如果str == null,抛出错误NullPointerException Optional<String> optional = Optional.ofNullable(str); // 如果str == null,返回一个空Optional<String> Optional.<String>empty(); // 返回一个空Optional<String> String s = optional.get(); //获取被包装的值 optional.ifPresent((value) -> System.out.println("hello")); // 如果optional的value不是null,则执行函数表达式 optional.orElse("elseValue"); // 如果optional的value为null,则返回"elseValue" optional.orElseGet(() -> "orElseGet"); // 如果optional的value不是null,则返回函数表达式的执行结果 optional.orElseThrow(RuntimeException::new); // 如果optional的value不是null,则抛出错误 optional.filter((value) -> value.length() == 5); // 过滤得到长度等于5的value optional.map((value) -> { System.out.println("map:" + value); return value; }); optional.flatMap((value) -> { System.out.println("flatMap:" + value); return Optional.ofNullable(value); });
map 与 flatMap 的区别
map(mapper) 与 flatMap(mapper) 功能上基本是一样的,只是最后的返回值不一样。map(mapper)方法里面的mapper可以返回任意类型,但是flatMap(mapper)方法里面的只能返回Optional类型。
如果mapper返回结果result的不是null,那么map就会返回一个Optional
【Java8】Optional
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。