如何从具有Generic的类访问.class?

Ben*_*laa 8 java generics

当涉及没有泛型的类时,我可以像这样访问这个.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>上课?

new*_*cct 8

你总是可以这样做:

class Foo<T>{
    Class<Foo<T>> getMyClass(){
        return (Class<Foo<T>>)(Class<?>)Foo.class
    }
}
Run Code Online (Sandbox Code Playgroud)

您将获得未经检查的强制转换警告,因为它确实是不安全的 - 正如其他人所提到的,返回的类对象不再是" Foo<T>类"作为" Foo<SomethingElse>类".