这个Java8Lambda方法是如何工作的?

这个Java8Lambda方法是如何工作的?,lambda,interface,java-8,Lambda,Interface,Java 8,这是Java8Lambda方法,它的Java7等价物是什么 public interface Function<T, R> { static <T> Function<T, T> identity() { return t -> t; } R apply(T t); } 公共接口功能{ 静态函数标识(){ 返回t->t; } R应用(T); } 因此,它只是一个JAVA接口,但如何使用t->t?lambda

这是Java8Lambda方法,它的Java7等价物是什么

public interface Function<T, R> {

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

    R apply(T t);
}
公共接口功能{
静态函数标识(){
返回t->t;
}
R应用(T);
}

因此,它只是一个JAVA接口,但如何使用
t->t

lambda表达式相当于以下匿名类实例:

<T> Function<T, T> identity() {
    return new Function<T, T> () {
        public T apply (T t) {
            return t;
        }
    };
}
函数标识(){
返回新函数(){
公共T应用(T){
返回t;
}
};
}
lambda表达式使您无需指定正在实现的接口方法的名称及其参数类型,因为它们仅用于实现函数接口,函数接口只能有一个抽象方法,因此,通过说明目标接口类型(
Function
,在本例中),很清楚您正在实现哪种方法


当然,Java 7没有静态接口方法,所以您不能在接口中包含该方法。

但是如果我省略了静态,那么它将要求我在的对象创建中再次实现identity方法Function@PradeepKumarKushwaha您可以将该方法(静态或非静态)放在某个类中。在Java 7中,不能将带有主体的方法放在接口中。@Eugene,它具有相同的行为。在当前实现中,
t->t
总是计算为相同的对象。
t->t
(t)->{return t;}