我试图理解此方法签名:
public final <T> FluentIterable<T> transform(Function<? super E,T> function)
(摘自http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/FluentIterable.html#transform%28com.google.common.base.Function%29)
我知道转换会返回
FluentIterable<T>
,但是我不理解<T>
之前的FluentIterable<T>
是什么意思?此外,在
Function<? super E,T>
中,我理解了? super E
的含义,但我无法想象编译器如何进行检查-在编译时不是未知的,因此,如果?
是一个E
的超类型? 最佳答案
<T>
表示这是带有通用类型参数T
的方法。在类名(例如<T>
)之后,这类似于List<T>
,仅用于方法。E
在编译时并不未知。 E
也是在类定义中定义的通用类型参数:
public abstract class FluentIterable<E> extends Object implements Iterable<E>
创建此类的实例时,编译器会知道
E
的类型。