首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java类型擦除

Java类型擦除
EN

Stack Overflow用户
提问于 2020-06-25 09:35:08
回答 1查看 39关注 0票数 0

为什么会有以下片段打印:

构造函数类:类java.lang.Integer

构造函数obj:类java.lang.Integer

我希望

构造函数类:类java.lang.Integer

构造函数obj:类java.lang.Object

因为类型擦除“用object替换”未绑定的T。(使用中的java13)

谢谢。

代码语言:javascript
复制
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());
    }
}
EN

回答 1

Stack Overflow用户

发布于 2020-06-25 11:38:41

考虑到:

代码语言:javascript
复制
Object o = 2; 
System.out.println(o.getClass());

可以看到,.getClass()返回运行时类型,即Integer。

因此,这个问题实际上与类型擦除无关。

这个答案是由清洁工给出的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62572270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档