当涉及没有泛型的类时,我可以像这样访问这个.class属性:
class Foo{
Class<Foo> getMyClass(){
return Foo.class;
}
}
Run Code Online (Sandbox Code Playgroud)
但是如果Foo有一个泛型,我如何访问这个".class"属性?像这样:
class Foo<T>{
Class<Foo<T>> getMyClass(){
return (Foo<T>).class //this doesnt work...
}
}
Run Code Online (Sandbox Code Playgroud)
我试图回来Foo.class,但这不会起作用:"cannot cast from Class<Foo> to Class<Foo<T>>".
我怎样才能Foo<T>上课?
你总是可以这样做:
class Foo<T>{
Class<Foo<T>> getMyClass(){
return (Class<Foo<T>>)(Class<?>)Foo.class
}
}
Run Code Online (Sandbox Code Playgroud)
您将获得未经检查的强制转换警告,因为它确实是不安全的 - 正如其他人所提到的,返回的类对象不再是" Foo<T>类"作为" Foo<SomethingElse>类".
| 归档时间: |
|
| 查看次数: |
2743 次 |
| 最近记录: |