java - 详细删除?

标签 java generics

我正在研究 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;
}

那么,我的假设对吗?

谢谢。

最佳答案

你基本上已经知道了。编译器使用通用参数类型来验证代码,但生成的字节码替换为不同的类。

对于未绑定(bind)的通用参数,如 <T> , 它将是 Object .但是,如果声明是 <T extends Comparable> ,替换的类将是 Comparable而不是 Object .

编辑:关于 Java 泛型的重要信息,尽管部分信息非常密集:

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

关于java - 详细删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4750285/

相关文章:

java - 从 onPause() 启动时 MediaPlayer 循环

c# - 使用类型实例化使用受限泛型的派生类

java - 没有类型作为方法参数的泛型 - 无法解析它的字段类型

c# - Action 字典期望其键的类型

java - 如何告诉 ant 使用特定的 javac 可执行文件进行构建?

java - 如何将对象形状从一个位置移动到另一个位置?

java - 生成 Javaassist 运行时 POJO 时出现异常

java 文件仅插入文件中的最后数据

Java从类实例中获取表示类的泛型类型

scala - 如何对泛型类型参数进行模式匹配?