java如何访问。从具有泛型的类初始化?
当涉及到没有泛型的类时,我可以访问它。类属性,如下所示:
class Foo{
Class<Foo> getMyClass(){
return Foo.class;
}
}
但是如果Foo有一个泛型,我如何访问这个“.class”属性呢?像这样:
class Foo<T>{
Class<Foo<T>> getMyClass(){
return (Foo<T>).class //this doesnt work...
}
}
我试图返回Foo.class
,但这行不通:"cannot cast from Class<Foo> to Class<Foo<T>>"
如何访问Foo<T>
的类
# 1 楼答案
没有办法,因为type erasure。这:
。。。无法在运行时获取,无论
T
的类型是什么,它都将始终是相同的类型。在运行时,仅此存在:# 2 楼答案
您始终可以这样做:
您将看到未选中的强制类型转换警告,因为它确实是不安全的,正如其他人所提到的,返回的类对象不再是“
Foo<T>
的类”作为“Foo<SomethingElse>
的类”