为什么会有以下片段打印:
构造函数类:类java.lang.Integer
构造函数obj:类java.lang.Integer
我希望
构造函数类:类java.lang.Integer
构造函数obj:类java.lang.Object
因为类型擦除“用object替换”未绑定的T。(使用中的java13)
谢谢。
public class Test {
public static void main(String... args){
var g = new TestG<>(Integer.class, 2);
g.print();
}
}
public class TestG<T> {
private final Class<T> clazz;
private final T obj;
public TestG(Class<T> clazz, T obj) {
this.clazz = clazz;
this.obj = obj;
}
public void print(){
System.out.println("Constructor class: " + clazz);
System.out.println("Constructor obj: " + obj.getClass());
}
}发布于 2020-06-25 11:38:41
考虑到:
Object o = 2;
System.out.println(o.getClass());可以看到,.getClass()返回运行时类型,即Integer。
因此,这个问题实际上与类型擦除无关。
这个答案是由清洁工给出的。
https://stackoverflow.com/questions/62572270
复制相似问题