Lambda - @FunctionalInterface 函数

2019-08-27  本文已影响0人  AlanSun2

什么是Lambda?

我的理解是Lambda就是函数式接口的一种表现形式。


@FunctionalInterface 一种信息性注解类型,表示被注解接口是一个符合Java语言规范定义的函数式接口

一个函数式接口只有一个抽象方法,但是被注解接口中可以有重写了java.lang.Object中的抽象方法,例如:

@FunctionalInterface
public interface MyInter {
    void test();

    /**
     * toString 是Object中的方法
     */
    String toString();
}

这是因为,所有的实现类都隐式的继承Object方法,自然也包含这些方法。

请注意,可以使用lambda表达式,方法引用或构造函数引用创建函数式接口的实例。

Java8中的内置函数式接口

接口 参数 返回类型 说明
Predicate<T> T boolean 断言型。输入某个值,输出bool值,用于对某值进行判定
Consumer<T> T void 消费型。输入某值,无输出。用于消费某值
Function<T,R> T R 函数型。输入某类型值,输出另种类型值,用于类型转化等
Supplier<T> None T 供给型。无输入,输出某值,用于生产某值

方法引用和构造器引用

方法引用和构造器引用是Lambda表达式的变体。

方法引用包括:

  1. 对象方法引用
  2. 类静态方法引用
  3. 类实例方法引用

什么时候可以使用方法引用和构造器引用?

当Lambda体内的内容由一个方法或构造器提供时,可以使用方法引用和构造器引用。

上一篇 下一篇

猜你喜欢

热点阅读