optional 是Java8 util包中的类,我们为了避免空指针异常(NullPointerException),经常要写好多类似if(a!=null){...},optional就是为了解决这些问题,让代码看起来更nb。
(一)Optional.ofNullable(e).ifPresent()
此方法是当传入的对象为不为空(e!=null)时,才会执行ifPresent()中的代码,e==null时什么都不会执行,也不会抛异常。
//空对象 不会执行
Optional.ofNullable(null).ifPresent(e -> {
System.out.println("空");
});
//空字符串时会执行
Optional.ofNullable("").ifPresent(e -> {
System.out.println("空字符串");
});
//空格 也会执行
Optional.ofNullable(" ").ifPresent(e -> {
System.out.println("空格");
});
输出:
空字符串
空格
(二)Optional.ofNullable(e).orElse()
orElse()方法,当 Optional 中有值则将其返回,为空时返回 orElse 方法传入的参数。
此方法可以替代三目运算符使用。
//为空时返回orElse中的值
System.out.println(Optional.ofNullable(null).orElse("默认值"));
//输出 默认值
//不为空时
System.out.println(Optional.ofNullable("我不是空").orElse("默认值"));
//输出 我不是空
(三)Optional.ofNullable(e).orElseGet()
orElseGet方法,当Optional 中值为空时,orElseGet与orElse效果是一样的。当Optional 中有值时,两者才有区别,上代码。
//当参数为空时
String a = (String) Optional.ofNullable(null).orElse(get("a"));
System.out.println("a="+a);
String b = (String) Optional.ofNullable(null).orElseGet(() -> get("b"));
System.out.println("b="+b);
输出
a:我执行了
a=a
b:我执行了
b=b
//参数不为空是
String c = Optional.ofNullable("notnull").orElse(get("c"));
System.out.println("c="+c);
String d = Optional.ofNullable("我不是空").orElseGet(() -> get("d"));
System.out.println("d="+d);
输出
c:我执行了
c=notnull
(此处没有 执行)
d=我不是空
private static String get(String s) {
System.out.println(s + ":我执行了");
return s;
}
可以看到,当参数不为空时,orElseGet中的方法是没有执行的。文章来源:https://www.toymoban.com/news/detail-762914.html
(四)Optional.ofNullable(e).filter()
filter个方法通过传入的定条件对Optional实例的值进行过滤,它可以配合着.ifPresent()方法和.orElse()使用文章来源地址https://www.toymoban.com/news/detail-762914.html
Optional.ofNullable("notnull").filter(t -> "notnull".equals(t)).ifPresent(t2 -> System.out.println("成立时我才会执行"));
输出
成立时我才会执行
String a=Optional.ofNullable("notnull").filter(t -> "null".equals(t)).orElse(("不成立时我才会执行"));
System.out.println("a="+a);
String b=Optional.ofNullable("notnull").filter(t -> "notnull".equals(t)).orElse(("不成立时我才会执行"));
System.out.println("b="+b);
输出
a=不成立时我才会执行
b=notnull
到了这里,关于Optional常用方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!