我正在研究Java中的泛型。
我研究过,在编译过程中,擦除会擦除所有通用信息。

在这里,我研究了所有T被Object取代。

 Integer v = display(2);
 String d = display("3");

public <T> T display(T i){
       return i;
    }

我希望它将变成
Integer v = (Integer)display(2);
String d = (String) display("3");
public Object display(Object i){
return i;
}

所以,我的假设正确吗?

谢谢。

最佳答案

你基本上有它。编译器使用通用参数类型来验证代码,但生成的字节码将替换为其他类。

对于像<T>这样的未绑定通用参数,它将是Object。但是,如果声明是<T extends Comparable>,则替换的类将是Comparable而不是Object

编辑:有关Java泛型的详细信息,尽管其中包含大量信息:

Java泛型常见问题解答-常见问题
http://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.html

07-24 09:49
查看更多