List of utility methods to do Reflection Generic Type
Type[] | getGenericArguments(Type type) Returns the generic type argument. if (type instanceof GenericArrayType) { return getGenericArguments(((GenericArrayType) type).getGenericComponentType()); } else if (type instanceof ParameterizedType) { ParameterizedType parameters = (ParameterizedType) type; return parameters.getActualTypeArguments(); } else { return new Class<?>[0]; |
Type[] | getGenericElementType(Type type) Retrieves type parameter from the parameterized type (either Map or Collection ) specification.
if (isGenericType(type)) { return ((ParameterizedType) type).getActualTypeArguments(); return null; |
Class | getGenericFirst(Object obj) get Generic First Type type = (Type) obj.getClass().getGenericSuperclass();
ParameterizedType pt = (ParameterizedType) type;
Class classz = ((Class) pt.getActualTypeArguments()[0]);
return classz;
|
List extends Type> | getGenerics(Type genericType) Returns the generic types represented in the given type. List<Type> classes = new ArrayList<Type>(); if (genericType instanceof ParameterizedType) { ParameterizedType ptype = (ParameterizedType) genericType; Type[] targs = ptype.getActualTypeArguments(); for (Type targ : targs) { classes.add(targ); return classes; |
Class[] | getGenerics(Type t) get Generics Class[] generics = null; if (t instanceof ParameterizedType) { ParameterizedType type = (ParameterizedType) t; Type[] typeArguments = type.getActualTypeArguments(); generics = new Class[typeArguments.length]; for (int i = 0; i < typeArguments.length; ++i) { generics[i] = (Class) typeArguments[i]; return generics; |
String | getGenericString(AccessibleObject ao) Gets the generic string of the passed AccessibleObject if (ao == null) return null; if (ao instanceof Method) { return ((Method) ao).toGenericString(); } else if (ao instanceof Constructor) { return ((Constructor<?>) ao).toGenericString(); } else if (ao instanceof Field) { Field f = (Field) ao; ... |
Type | getGenericSuperType(Type t) get Generic Super Type if (t instanceof Class) { return ((Class) t).getGenericSuperclass(); } else if (t instanceof ParameterizedType) { return getGenericSuperType(((ParameterizedType) t).getRawType()); return null; |
Class> | getGenericType(@Nullable Type genericType) Retrieves the generic subtype of the given type. if (genericType != null && genericType instanceof ParameterizedType) { Type[] types = ((ParameterizedType) genericType).getActualTypeArguments(); if (types.length > 0 && types[0] instanceof Class<?>) { return (Class<?>) types[0]; return null; |
Class | getGenericType(Member member, int index) Returns the actual generic type of a class's type parameter of the member .
Type type; if (member instanceof Field) { final Field field = (Field) member; type = field.getGenericType(); } else { final Method method = (Method) member; type = method.getGenericReturnType(); if (!(type instanceof ParameterizedType)) { return null; final ParameterizedType parameterizedType = (ParameterizedType) type; final Type[] types = parameterizedType.getActualTypeArguments(); return (Class<X>) ((types != null) && (index < types.length) ? types[index] : null); |
Class> | getGenericType(Method setter) get Generic Type if (setter != null) { Type[] genericParameterTypes = setter.getGenericParameterTypes(); for (int i = 0; i < genericParameterTypes.length; i++) { if (genericParameterTypes[i] instanceof ParameterizedType) { Type[] parameters = ((ParameterizedType) genericParameterTypes[i]).getActualTypeArguments(); if (parameters != null && parameters.length == 1) { return (Class<?>) parameters[0]; return null; |