获取准确泛型的代码
/** 泛型构造类 */
public class TypeReference implements ParameterizedType {
private Type rawType;
private Type [] actualTypeArguments;
public TypeRefrence(Type rawType, Type [] actualTypeArguments){
this.rawType = rawType;
this.actualTypeArguments = actualTypeArguments;
}
public Type[] getActualTypeArguments() {
return actualTypeArguments;
}
public Type getRawType() {
return rawType;
}
public Type getOwnerType() {
return null;
}
}
if (!type.isPrimitive()) {
//set generic type if field not primitive type
java.lang.reflect.Type rawType = (java.lang.reflect.Type) value.getClass();
java.lang.reflect.Type genericType = field.getGenericType();
try {
ParameterizedType parameterizedType = (ParameterizedType) genericType;
com.xxx.xxx.xxxxx.core.TypeRefrence typeRefrence = new TypeRefrence(rawType, parameterizedType.getActualTypeArguments());
//构造泛型类型
switchBean.setGeneric(typeRefrence);
} catch (ClassCastException e) {
switchBean.setGeneric(genericType);
}
}