获取类的泛型类型
第一种方法:
public class ParameterDesc<T> {
private final String _name;
private Class<T> _type;
public ParameterDesc(String name){
this._name = name;
}
public String getName(){
return _name;
}
@SuppressWarnings("unchecked")
public Class<T> getType(){
if(null == _type){
TypeVariable[] tvs = getClass().getTypeParameters();
Type tp = tvs[0].getBounds()[0];
_type = (Class<T>)tp;
}
return _type;
}
}
第二种方法:
abstract class ParameterDesc<T> {
@SuppressWarnings("unchecked")
public Class<T> getType() {
Type type = getClass().getGenericSuperclass();
if (type instanceof ParameterizedType) {
ParameterizedType pType = (ParameterizedType) type;
return (Class<T>) pType.getActualTypeArguments()[0];
} else {
return null;
}
}
}