I need to supply class. I have a class Foo so if I supply Foo.class
it works fine but I need to supply List<Foo>.class
but this doesn't exist.
How can I pass class of List Type?
Any help is appreciated.
I need to supply class. I have a class Foo so if I supply Foo.class
it works fine but I need to supply List<Foo>.class
but this doesn't exist.
How can I pass class of List Type?
Any help is appreciated.
You cannot, due to type erasure. At runtime, generic type parameters are erased, and no longer available. As a result, although List<Foo>
may exist at compile-time as a generic, at runtime you will only have List.class
, of type Class<List>
.
From the Java Language Specification, version 8, section 15.8.2:
It is a compile-time error if the named type is a type variable (§4.4) or a parameterized type (§4.5) or an array whose element type is a type variable or parameterized type.
For example, List<Foo>.class
, T.class
, List<Foo>[].class
, and T[].class
are all invalid (assuming that T
is a type parameter).