我正在尝试理解这种方法签名:
public final <T> FluentIterable<T> transform(Function<? super E,T> function)
我理解转换会返回FluentIterable<T>
,但我不明白<T>
之前的FluentIterable<T>
是什么意思?
此外,在Function<? super E,T>
中,我理解? super E
的意思,但我无法想象编译器如何检查这一点 - 在编译时不是E未知,那么编译器应该如何知道,如果?
是E
的超类型?
答案 0 :(得分:5)
<T>
表示这是一个泛型类型参数T
的方法。这与类名称之后的<T>
类似(如List<T>
),仅适用于方法。
E
在编译时并不为人所知。 E
也是类定义中定义的泛型类型参数:
public abstract class FluentIterable<E> extends Object implements Iterable<E>
当您创建此类的实例时,编译器会知道E
的类型。