return getRawType((ParameterizedType) type); return getRawType(typeArgument, assigningType); Class<?> rawComponentType = getRawType(((GenericArrayType) type) .getGenericComponentType(), assigningType);
TypeVariable<?>[] typeVars = getRawType(parameterizedType).getTypeParameters();
public static Class<?> getActualType(Type type) { if (type instanceof Class<?>) { // it is raw, no problem return (Class<?>) type; } if (type instanceof ParameterizedType) { // simple enough to get the raw type of a ParameterizedType return getRawType((ParameterizedType) type); } if (type instanceof TypeVariable<?>) { Type[] types = ((TypeVariable<?>) type).getBounds(); if (types.length == 1) { return getActualType(types[0]); } } if (type instanceof GenericArrayType) { // get raw component type Type t = ((GenericArrayType) type).getGenericComponentType(); Class<?> rawComponentType = getActualType(t); // create array type from raw component type and return its class return Array.newInstance(rawComponentType, 0).getClass(); } return null; }
midClass = getRawType((ParameterizedType) midType); } else if (midType instanceof Class<?>) { midClass = (Class<?>) midType;
Class<?> cls = getRawType(parameterizedType); typeVarAssigns = getTypeArguments(parameterizedOwnerType, getRawType(parameterizedOwnerType), subtypeVarAssigns); } else {
Class<?> toClass = getRawType(toParameterizedType);
return isAssignable(getRawType((ParameterizedType) type), toClass);
Class<?> superClass = getRawType(superType); Class<?> midClass = getRawType(midParameterizedType);