public static Class<?>[] resolveTypeArguments(Class<?> concreteClass, Type type) { if (type instanceof ParameterizedType) { return resolveTypeArguments(concreteClass, (ParameterizedType) type); } return new Class<?>[0]; }
public static Class<?>[] getResolvedMethodReturnTypeArguments(Class<?> clazz, Method m) { if (m == null) { return null; } return resolveTypeArguments(clazz, m.getGenericReturnType()); }
public static Class<?>[] getResolvedFieldTypeArguments(Class<?> clazz, Field f) { if (f == null) { return null; } return resolveTypeArguments(clazz, f.getGenericType()); }
@Override public Class<?> getUnderlyingType(Class<?> owningClass, Type declaredType) { if (declaredType.getClass() == Class.class) { return (Class<?>) declaredType; } return ReflectionUtils.resolveTypeArguments(owningClass, declaredType)[0]; }
public Class<?>[] getResolvedTypeParameters(Class<?> concreteClass) { Type t = method != null ? method.getGenericParameterTypes()[index] : constructor.getGenericParameterTypes()[index]; return ReflectionUtils.resolveTypeArguments(concreteClass, t); }
public static Class<?>[][] getResolvedMethodParameterTypesArguments(Class<?> clazz, Method method) { int parameterCount = method.getParameterTypes().length; Class<?>[][] parameterTypeArguments = new Class<?>[parameterCount][]; Type[] genericParameterTypes = method.getGenericParameterTypes(); for (int i = 0; i < parameterCount; i++) { parameterTypeArguments[i] = resolveTypeArguments(clazz, genericParameterTypes[i]); } return parameterTypeArguments; }
public Class<?>[] getResolvedTypeParameters(Class<?> concreteClass) { Type t = method != null ? method.getGenericExceptionTypes()[index] : constructor.getGenericExceptionTypes()[index]; return ReflectionUtils.resolveTypeArguments(concreteClass, t); }
@Override protected Class<?>[] getTypeArguments() { Class<?> clazz = getDeclaringType().getJavaType(); Constructor<?> constructor = getDeclaringConstructor().getJavaConstructor(); Type[] genericParameterTypes = constructor.getGenericParameterTypes(); return ReflectionUtils.resolveTypeArguments(clazz, genericParameterTypes[getIndex()]); }