The list of methods to do Reflection Generic Parameter are organized into topic(s).
Class[]
getGeneric(ParameterizedType type) get Generic
try {
if (type != null) {
Type[] typeArgs = type.getActualTypeArguments();
if (typeArgs != null && typeArgs.length > 0) {
Class[] args = new Class[typeArgs.length];
for (int i = 0; i < typeArgs.length; i++) {
Type arg = typeArgs[i];
args[i] = (Class) arg;
...
Type[]
getGenericParameter(final Type type) get Generic Parameter
if (ParameterizedType.class.isInstance(type)) {
return ParameterizedType.class.cast(type).getActualTypeArguments();
if (GenericArrayType.class.isInstance(type)) {
return getGenericParameter(GenericArrayType.class.cast(type).getGenericComponentType());
return null;
Type
getGenericParameter(final Type type, final int index) get Generic Parameter
if (!(type instanceof ParameterizedType)) {
return null;
final Type[] genericParameter = getGenericParameters(type);
if (genericParameter == null) {
return null;
return genericParameter[index];
...
List
getGenericParameterList(Type type)
get Generic Parameter List
if (ParameterizedType.class.isInstance(type)) {
final ParameterizedType paramType = ParameterizedType.class.cast(type);
return Arrays.asList(paramType.getActualTypeArguments());
if (GenericArrayType.class.isInstance(type)) {
final GenericArrayType arrayType = GenericArrayType.class.cast(type);
return getGenericParameterList(arrayType.getGenericComponentType());
@SuppressWarnings("unchecked")
List<Type> emptyList = Collections.EMPTY_LIST;
return emptyList;
Type[]
getGenericParameters(final Type type) get Generic Parameters
if (type instanceof ParameterizedType) {
return ParameterizedType.class.cast(type).getActualTypeArguments();
if (type instanceof GenericArrayType) {
return getGenericParameters(GenericArrayType.class.cast(type).getGenericComponentType());
return null;
Type
getGenericParameterType(Type type, int index) get Generic Parameter Type
if (!ParameterizedType.class.isInstance(type)) {
return null;
final Type[] genericParameterTypeList = getGenericParameterTypes(type);
if (genericParameterTypeList.length == 0 || genericParameterTypeList.length < index) {
return null;
return genericParameterTypeList[index];
...
Type[]
getGenericParameterTypes(final Type type) get Generic Parameter Types
if (ParameterizedType.class.isInstance(type)) {
return ParameterizedType.class.cast(type).getActualTypeArguments();
if (GenericArrayType.class.isInstance(type)) {
return getGenericParameterTypes(GenericArrayType.class.cast(type).getGenericComponentType());
return EMPTY_TYPES;
Type[]
getGenericParameterTypes(Type t) get Generic Parameter Types
if (ParameterizedType.class.isInstance(t)) {
ParameterizedType pt = ParameterizedType.class.cast(t);
return pt.getActualTypeArguments();
} else
return null;