Java类型参数的类名称?

前端之家收集整理的这篇文章主要介绍了Java类型参数的类名称?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设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);
}
原文链接:https://www.f2er.com/java/126420.html

猜你在找的Java相关文章