这是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
?
答案 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没有静态接口方法,因此您无法在接口中包含该方法。