Generic Types
This Java library provides a factory to create generic java.lang.reflect.Type
variations, such as Map<String, Object>
. Use it as follows:
final Type genericMap = GenericTypes.generic(Map.class, String.class, Object.class);
final Type genericList = GenericTypes.generic(List.class, String.class);
Super- and subtypes such as List<? super Point>
or List<? extends Number>
can be created in the following way:
final Type list = GenericTypes.generic(List.class, GenericTypes.supertype(Point.class));
final Type list = GenericTypes.generic(List.class, GenericTypes.subtype(Number.class));
Use static imports to shorten the above calls to:
final Type list = generic(List.class, supertype(Point.class));
final Type list = generic(List.class, subtype(Number.class));
and then go crazy with this:
final Type type = generic(List.class, generic(Map.class, subtype(Number.class), supertype(String.class)));
which represents a List<Map<? extends Number, ? super String>>
.