美文网首页
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