假设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)
}
Run Code Online (Sandbox Code Playgroud)
Rev*_*nzo 17
Java泛型通过类型擦除实现.它们只能用于编译时检查.在编译之后,对象变为最低的公共对象.(在本例中为Object.class).
编译后的字节码不知道T是什么.
如果要访问该类,则需要将方法更改为:
<T> void downloadParse(Class<T> cls){
ParserObject obj;
obj.parse(cls);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
27002 次 |
最近记录: |