Java 这个泛型函数做什么?

Java 这个泛型函数做什么?,java,list,generics,syntax,Java,List,Generics,Syntax,我有一个类来创建一个不可变列表,使用泛型和递归来提高性能,这两个类有一个我无法理解的方法: public <E2> ImmutableList<E2> transform(Function<? super E, ? extends E2> fn) { return tail == null ? new ImmutableList<E2>() : new ImmutableList<

我有一个
来创建一个
不可变列表
,使用泛型递归来提高性能,这两个类有一个我无法理解的方法:

public <E2> ImmutableList<E2> transform(Function<? super E, ? extends E2> fn) {
        return tail == null
            ? new ImmutableList<E2>()
            : new ImmutableList<E2>(fn.apply(head), tail.transform(fn));
    }
这是功能界面:

public interface Function<A, B> {
    B apply(A value);
}
公共接口功能{
B适用(A值);
}

转换
接受从
E
E2
函数(或者更准确地说,从
E
或从
E
E2
的超类型或
E2
的子类型)
Function
是一个接口,具有一个名为
apply()
的方法
fn.apply()
接受类型为
E
的参数,并返回类型为
E2
的参数

transform
将该函数应用于执行它的列表的所有元素,因此它从执行它的输入
ImmutableList
生成一个
ImmutableList

是一个泛型类型参数,它表示
transform
方法返回的列表中包含的元素的类型

public interface Function<A, B> {
    B apply(A value);
}