2

我试图理解这个方法签名:

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

我知道 transform 返回 a FluentIterable<T>,但我不明白<T>之前的FluentIterable<T>意思是什么?

此外,在 中Function<? super E,T>,我理解是什么? super E意思,但我无法想象编译器如何检查这个 - 在编译时不是 E 未知,那么编译器如何知道,如果?是 的超类型E

4

1 回答 1

5

<T>意味着这是一个带有泛型类型参数的方法T。这<T>类似于在类名(如List<T>)之后,仅用于方法。

E在编译时不是未知的。E也是类定义中定义的泛型类型参数:

public abstract class FluentIterable<E> extends Object implements Iterable<E>

当您创建此类的实例时,编译器会知道E.

于 2013-03-30T12:20:15.210 回答