美文网首页
Java8 in action----函数与lambda(一)

Java8 in action----函数与lambda(一)

作者: roryblucky | 来源:发表于2018-06-20 16:24 被阅读0次

一、@FunctionalInterface,标注为此注解的接口表明该接口为函数式接口,也就是仅定义一个抽象方法。如果定义多个方法,编译器会报错。此注解不是必须,但是是比较好的最佳实践。类似与@Override注解,表明此方法被重写。

二、方法引用适用场景:

  1. 任何静态方法
Integer.parseInt(s)

替换为: Integer::pasrInt
  1. 指向任意类型实例方法。如:
lambda:(Function<T, R>)
(String s) -> s.length()

替换为:String::length
  1. lambda中调用已经存在一个外部对象.
() ->  expensiveTransaction.getValue()

替换为
expensiveTransaction::getValue

三、主要的jdk自带的接口有:
Consumer<T>: (T t) -> void
Predicate<T>: (T t) > boolean
Function<T, R>: (T t) -> R r
Supplier<T>: () -> T t
UnaryOperator<T>: (T t) -> T t
BinaryOperator<T>:(T t1, T t2) -> T t
BiPredicate<L, R>: (L l, R r ) -> boolean
BiFunction<T, U, R>: (T t, U u) -> R r
BiConsumer<T, U>: (T t, U u) -> void

以上函数式接口为了防止自动装箱,都有专门的版本,如IntConsumer,IntPredicate等接口。

相关文章

网友评论

      本文标题:Java8 in action----函数与lambda(一)

      本文链接:https://www.haomeiwen.com/subject/gihxyftx.html