这个JAVA 8 lambda方法如何工作?

时间:2018-03-22 07:17:45

标签: lambda interface java-8

这是Java 8 lambda方法,它的JAVA 7等价物是什么?

public interface Function<T, R> {

    static <T> Function<T, T> identity() {
        return t -> t;
    }

    R apply(T t);
}

所以它只是一个JAVA界面但是如何使用t -> t

1 个答案:

答案 0 :(得分:4)

该lambda表达式等效于以下匿名类实例:

<T> Function<T, T> identity() {
    return new Function<T, T> () {
        public T apply (T t) {
            return t;
        }
    };
}

lambda表达式使您无需指定要实现的接口方法的名称及其参数类型,因为它们仅用于实现功能接口,它只能有一个抽象方法,因此通过声明目标接口键入(在此示例中为Function<T, T>),它清楚您正在实施哪种方法。

当然,Java 7没有静态接口方法,因此您无法在接口中包含该方法。