在Java docs中,java泛型的示例如下。
/**
* Generic version of the Box class.
* @param <T> the type of the value being boxed
*/
public class Box<T> {
// T stands for "Type"
private T t;
public void set(T t) { this.t = t; }
public T get() { return t; }
}
为什么<T>
紧接在Box
之后。我知道T
代表用户将使用的Type。但是,如果您看一下其余的语法,则T
始终排在第一位。
例如,在private T t;
中,T早于t。
在方法get()
和set(T t)
中,我们再次看到T
在方法名称之前,而不是在我们正在创建的对象或方法的名称之后。
据我了解,Box之类的类也是一个对象,所以我们为什么不写:
public class T Box { //... }
或者,或者,
public <T> class Box { //... }
我想知道这一点,因为它使我感到困惑。每当我编写通用方法时,我都必须返回到现有代码以查看最先出现的代码,因此,如果我知道为什么一个必须首先出现,为什么另一个必须最后出现的情况,则不必回到已经存在的位置现有代码并将其用作参考。
T类似于类/类型的变量。只需将您问题中的所有T替换为例如字符串或整数等,您将获得常规的Java语法。
我知道T代表用户将使用的Type。