Java 8 Optional类介绍及其源码(5)

public T get() { if (value == null) { throw new NoSuchElementException("No value present"); } return value; }

isPresent()方法

很简单,判断值是否不为null

public boolean isPresent() { return value != null; }

ifPresent(Consumer<? super T> consumer)方法

当值不为null时,执行consumer

public void ifPresent(Consumer<? super T> consumer) { if (value != null) consumer.accept(value); }

举个例子,ifPresent方法执行Lambda表达式,将值转换为大写并打印:

package optional; import java.util.Optional; public class Snippet { public static void main(String[] args) { Optional<String> test = Optional.ofNullable("abcDef"); //值不为null,执行Lambda表达式, test.ifPresent(name -> { String s = name.toUpperCase(); System.out.println(s); }); //打印ABCDEF } }

filter(Predicate<? super T> predicate)方法

看方法名就知道,该方法是过滤方法,过滤符合条件的Optional对象,这里的条件用Lambda表达式来定义,

如果入参predicate对象为null将抛NullPointerException异常,

如果Optional对象的值为null,将直接返回该Optional对象,

如果Optional对象的值符合限定条件(Lambda表达式来定义),返回该值,否则返回空的Optional对象

源码如下:

public Optional<T> filter(Predicate<? super T> predicate) { Objects.requireNonNull(predicate); if (!isPresent()) return this; else return predicate.test(value) ? this : empty(); }

使用示例:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/2872627c8a70bbbf1de4be24541a0ac7.html