当涉及没有泛型的类时,我可以像这样访问这个.class属性:
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>
的课程?
2 回答
由于type erasure,没有办法 . 这个:
...无法在运行时获取,无论
T
的类型是什么,它总是相同的类型 . 在运行时只存在:你总是可以这样做:
您将获得未经检查的强制转换警告,因为它确实是不安全的 - 正如其他人所提到的,返回的类对象不再是“
Foo<T>
的类" as "Foo<SomethingElse>
的类” .