对于没有泛型的类,我可以像这样访问这个.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>
的课程?
答案 0 :(得分:8)
您可以随时执行此操作:
class Foo<T>{
Class<Foo<T>> getMyClass(){
return (Class<Foo<T>>)(Class<?>)Foo.class
}
}
您将获得未经检查的强制转换警告,因为它确实不安全 - 正如其他人所提到的那样,返回的类对象不再是“Foo<T>
的类”作为“Foo<SomethingElse>
的类”
答案 1 :(得分:4)