加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java类型参数的类名称?

发布时间:2020-12-15 00:24:33 所属栏目:Java 来源:网络整理
导读:假设T为类类型参数,为什么不能使用T.class 我正在编写一个下载页面的功能,并根据传递的类进行解析. 对于解析,我使用另一个函数,其签名是:ParSEObject :: parse(Class T classname) T void downloadParse(){ ParSEObject obj; obj.parse(T.class); //--- why
假设T为类类型参数,为什么不能使用T.class

我正在编写一个下载页面的功能,并根据传递的类进行解析.
对于解析,我使用另一个函数,其签名是:ParSEObject :: parse(Class< T> classname)

<T> void downloadParse(){
  ParSEObject obj;
  obj.parse(T.class); //<--- why compiler error here?? (whereas something like Integer.class is allowed)
}

解决方法

Java泛型是通过 type erasure实现的.它们只能用于编译时检查.编译完成后,对象将被更改为最低的公共对象. (在这种情况下为Object.class).

编译的字节码不知道T是什么.

如果您想访问该类,则需要将方法更改为:

<T> void downloadParse(Class<T> cls){
  ParserObject obj;
  obj.parse(cls);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读