Function<T, R>
Function<T, R>(java.util.function.Function)函数式接口,T是参数类型,R是返回值类型。
R apply(T t):需实现抽象方法apply
Consumer<T>
Consumer<T>(java.util.function.Consumer)是消费者接口,接收一个参数,没有返回值,一般用于改变一些期望的状态或完成一个事件。
void accept(T t):需实现抽象方法accept
default Consumer<T> andThen(Consumer<? super T> after):默认方法,传入Consumer2到Consumer1的andThen,返回生成的Consumer3,这个Consumer3的accept方法是先执行Consumer1方法,再执行Consumer2方法。
Predicate<T>
Predicate<T>(java.util.function.Predicate)用于对一个事件进行判断
boolean test(T t):抽象方法test
supplier<T>
Supplier<T>(java.util.function.Supplier)是一个工厂接口,提供类型T的实例
T get():抽象方法,提供T的实例
Optional<T>
Optional类(java.util.Optional)是一个容器类,代表一个值存在或不存在,可以用来避免空指针异常。
Optional.of(T t):创建一个Optional实例
Optional.empty():创建一个空的Optional实例
Optional.ofNullable(T t):若t不为null,创建Optional实例,否则创建空实例
isPresent():判断是否包含值
orElse(T t):如果调用对象包含值,返回该值,否则返回t
orElseGet(Supplier s):如果调用对象包含值,返回该值,否则返回s获取的值
map(Function f):如果有值对其处理,并返回处理后的Optional,否则返回Optional.empty()
flatMap(Function mapper):与map类似,要求返回值必须是Optional
使用举例:这样可以通过Optional避免null校验。
Public static String getValue(Object object) {
return Optional.ofNullable(object) // 创建Optional对象
.map(objectTemp -> objectTemp.value) // 执行function操作
.orElse("no object"); // 获取对象的值或返回no object
}