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

当涉及没有generics的类时,我可以像这样访问这个.class属性:

class Foo{ Class getMyClass(){ return Foo.class; } } 

但是如果Foo有一个generics,我如何访问这个“.class”属性? 像这样:

 class Foo{ Class<Foo> getMyClass(){ return (Foo).class //this doesnt work... } } 

我试图返回Foo.class ,但这不起作用: "cannot cast from Class to Class<Foo>"

我如何访问Foo的课程?

你总是可以这样做:

 class Foo{ Class> getMyClass(){ return (Class>)(Class)Foo.class } } 

您将获得未经检查的强制转换警告,因为它确实不安全 – 正如其他人所提到的,返回的类对象不再是“ Foo的类”,而是“ Foo的类”。

由于类型擦除 ,没有办法。 这个:

 Foo.class 

…无法在运行时获得,无论T的类型是什么,它都将始终是相同的类型。 在运行时只存在:

 Foo.class