When it comes to classes without generics, i can access this .class attribute like this:
class Foo{
Class getMyClass(){
return Foo.cla
You can always do this:
class Foo<T>{
Class<Foo<T>> getMyClass(){
return (Class<Foo<T>>)(Class<?>)Foo.class
}
}
You will have unchecked cast warnings, because it indeed is unsafe -- as others have mentioned, the returned class object is not any more "Foo<T>'s class" as "Foo<SomethingElse>'s class".
There isn't a way, because of type erasure. This:
Foo<T>.class
... can not be obtained at runtime, it will always be the same type no matter what's the type of T. At runtime only this exists:
Foo.class