@SuppressWarnings("unchecked") public static <T> Class<T> getRawType(Type type) { if (type instanceof Class<?>) { return (Class<T>) type; } if (type instanceof ParameterizedType) { if (((ParameterizedType) type).getRawType() instanceof Class<?>) { return (Class<T>) ((ParameterizedType) type).getRawType(); } } if (type instanceof TypeVariable<?>) { TypeVariable<?> variable = (TypeVariable<?>) type; Type[] bounds = variable.getBounds(); return getBound(bounds); } if (type instanceof WildcardType) { WildcardType wildcard = (WildcardType) type; return getBound(wildcard.getUpperBounds()); } if (type instanceof GenericArrayType) { GenericArrayType genericArrayType = (GenericArrayType) type; Class<?> rawType = getRawType(genericArrayType.getGenericComponentType()); if (rawType != null) { return (Class<T>) Array.newInstance(rawType, 0).getClass(); } } return null; }
@SuppressWarnings("unchecked") public static <T> Class<T> getRawType(Type type) { if (type instanceof Class<?>) { return (Class<T>) type; } if (type instanceof ParameterizedType) { if (((ParameterizedType) type).getRawType() instanceof Class<?>) { return (Class<T>) ((ParameterizedType) type).getRawType(); } } if (type instanceof TypeVariable<?>) { TypeVariable<?> variable = (TypeVariable<?>) type; Type[] bounds = variable.getBounds(); return getBound(bounds); } if (type instanceof WildcardType) { WildcardType wildcard = (WildcardType) type; return getBound(wildcard.getUpperBounds()); } if (type instanceof GenericArrayType) { GenericArrayType genericArrayType = (GenericArrayType) type; Class<?> rawType = getRawType(genericArrayType.getGenericComponentType()); if (rawType != null) { return (Class<T>) Array.newInstance(rawType, 0).getClass(); } } return null; }
@SuppressWarnings("unchecked") public static <T> Class<T> getRawType(Type type) { if (type instanceof Class<?>) { return (Class<T>) type; } if (type instanceof ParameterizedType) { if (((ParameterizedType) type).getRawType() instanceof Class<?>) { return (Class<T>) ((ParameterizedType) type).getRawType(); } } if (type instanceof TypeVariable<?>) { TypeVariable<?> variable = (TypeVariable<?>) type; Type[] bounds = variable.getBounds(); return getBound(bounds); } if (type instanceof WildcardType) { WildcardType wildcard = (WildcardType) type; return getBound(wildcard.getUpperBounds()); } if (type instanceof GenericArrayType) { GenericArrayType genericArrayType = (GenericArrayType) type; Class<?> rawType = getRawType(genericArrayType.getGenericComponentType()); if (rawType != null) { return (Class<T>) Array.newInstance(rawType, 0).getClass(); } } return null; }
@SuppressWarnings("unchecked") public static <T> Class<T> getRawType(Type type) { if (type instanceof Class<?>) { return (Class<T>) type; } if (type instanceof ParameterizedType) { if (((ParameterizedType) type).getRawType() instanceof Class<?>) { return (Class<T>) ((ParameterizedType) type).getRawType(); } } if (type instanceof TypeVariable<?>) { TypeVariable<?> variable = (TypeVariable<?>) type; Type[] bounds = variable.getBounds(); return getBound(bounds); } if (type instanceof WildcardType) { WildcardType wildcard = (WildcardType) type; return getBound(wildcard.getUpperBounds()); } if (type instanceof GenericArrayType) { GenericArrayType genericArrayType = (GenericArrayType) type; Class<?> rawType = getRawType(genericArrayType.getGenericComponentType()); if (rawType != null) { return (Class<T>) Array.newInstance(rawType, 0).getClass(); } } return null; }
@SuppressWarnings("unchecked") public static <T> Class<T> getRawType(Type type) { if (type instanceof Class<?>) { return (Class<T>) type; } if (type instanceof ParameterizedType) { if (((ParameterizedType) type).getRawType() instanceof Class<?>) { return (Class<T>) ((ParameterizedType) type).getRawType(); } } if (type instanceof TypeVariable<?>) { TypeVariable<?> variable = (TypeVariable<?>) type; Type[] bounds = variable.getBounds(); return getBound(bounds); } if (type instanceof WildcardType) { WildcardType wildcard = (WildcardType) type; return getBound(wildcard.getUpperBounds()); } if (type instanceof GenericArrayType) { GenericArrayType genericArrayType = (GenericArrayType) type; Class<?> rawType = getRawType(genericArrayType.getGenericComponentType()); if (rawType != null) { return (Class<T>) Array.newInstance(rawType, 0).getClass(); } } return null; }
@SuppressWarnings("unchecked") public static <T> Class<T> getRawType(Type type) { if (type instanceof Class<?>) { return (Class<T>) type; } if (type instanceof ParameterizedType) { if (((ParameterizedType) type).getRawType() instanceof Class<?>) { return (Class<T>) ((ParameterizedType) type).getRawType(); } } if (type instanceof TypeVariable<?>) { TypeVariable<?> variable = (TypeVariable<?>) type; Type[] bounds = variable.getBounds(); return getBound(bounds); } if (type instanceof WildcardType) { WildcardType wildcard = (WildcardType) type; return getBound(wildcard.getUpperBounds()); } if (type instanceof GenericArrayType) { GenericArrayType genericArrayType = (GenericArrayType) type; Class<?> rawType = getRawType(genericArrayType.getGenericComponentType()); if (rawType != null) { return (Class<T>) Array.newInstance(rawType, 0).getClass(); } } return null; }