使用案例
@Test
public void testIsPresent() {
Optional optional = Optional.of(“thinkwon”);
Optional optional1 = Optional.ofNullable(null);
System.out.println(optional.isPresent());
System.out.println(optional1.isPresent());
}
输出结果
true
false
注意:下面例子的用法不但没有减少null的防御性检查,而且增加了Optional包装的过程,违背了Optional设计的初衷,因此开发中要避免这种糟糕的使用
试想一下如果先用isPresent方法获得是否存在,然后决定是否调用get方法和之前的ifelse判断并无二致。
@Test
public void testIsPresent1() {
Optional optional = Optional.ofNullable(null);
if (optional.isPresent()) {
System.out.println(optional.get());
}
}
[](()ifPresent(Consumer<? super T> consumer)方法
ifPresent()方法接受一个Consumer对象(消费函数),如果包装对象的值非空,运行Consumer对象的accept()方法
public void ifPresent(Consumer<? super T> consumer) {
if (value != null)
consumer.accept(value);
}
使用案例
@Test
public void testIfPresent() {
Optional optional = Optional.of(“thinkwon”);
optional.ifPresent(s -> System.out.println("the String is " + s));
}
输出结果
the String is thinkwon
[](()filter()方法
filter()方法接受参数为Predicate对象,用于对Optional对象进行过滤,如果符合Predicate的条件,返回Optional对象本身,否则返回一个空的Optional对象。
public

本文详细介绍了Java8中的Optional类,包括ifPresent、filter、map、flatMap、orElse系列方法的使用,以及如何通过Optional进行空判断和断言,同时提醒了在使用Optional时应注意的误区,帮助开发者更好地理解和应用这一特性。
最低0.47元/天 解锁文章
3243

被折叠的 条评论
为什么被折叠?



