在您编写的代码中, T不受任何约束。每当您调用该方法时,Java 都会为 T 分配一个类型get
,它会查看您期望返回的类型……但这似乎只有在您明确声明您在等待哪种类型时才有效。看下面的例子:
public static void jump(String a) {
}
public static <T> T get() {
return (T) null;
}
public static void main(String[] args) {
//This works quite well, generic parameter T is inferred to be String
String blah = get();
jump(blah);
}
另一方面
public static void jump(String a) {
}
public static <T> T get() {
return (T) null;
}
public static void main(String[] args) {
//This doesn't work, Java does not bind T to anything hence Object is used... and no jump for object is found
jump(get());
}
至少这是它在 Java 6 上的工作方式。