如何类型变量允许错误的类型?


package org.my.java;
public class TestTypeVariable {
static <T,A extends T> void typeVarType(T t, A a){
System.out.println(a.getClass());
System.out.println(t.getClass());
}
public static void main(String[] s){
int i= 1;
typeVarType("string", i);
}
}

运行时,输出如下:

class java.lang.Integer
class java.lang.String

A已经上限为String时,它怎么能属于Integer类型?

请解释一下。

这里有两件事:

  • 对于"错误"类型有一个简单的解决方案:T 不是字符串而是对象。和整数扩展对象。但请注意:这仅适用于 Java8 的"增强"类型推理功能。使用 Java7,您的输入将无法编译!
  • 您的误解:getClass()发生在运行时,因此返回传递的对象的特定类 - 独立于编译器在编译时对泛型的看法。

相关内容

  • 没有找到相关文章

最新更新