如何从具有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