java获取泛型的值_java 泛型获取

最简单的方法就是把泛型 Class 通过构造函数注入进去:public class Child implements Parent {

private Class cls;

public Child(Class cls) {

this.cls = cls;

}

@Override

public Class clazz() {

return cls;

}

}

当然还有更复杂的通过反射的方法, 但是因为类型擦除, 类自己的反射是获取不到自身的泛型类型的, 必须通过泛型类型元素的母元素反射获取:public class Main {

public List list;

public static void main(String[] args) throws Exception {

// 这样是拿不到泛型类型 Integer

List l = new ArrayList<>();

// 输出的是 ArrayList 声明的泛型变量 T

final TypeVariable extends Class extends List>>[] types = l.getClass().getTypeParameters();

for (TypeVariable extends Class extends List>> type : types) {

System.out.println(type.getName());

}

// 这样是可以拿到泛型类型 String

final Field list = Main.class.getField("list");

final Type genericType = list.getGenericType();

System.out.println(genericType.getTypeName());

if(genericType instanceof ParameterizedType) {

ParameterizedType t = (ParameterizedType) genericType;

System.out.println(Arrays.toString(t.getActualTypeArguments()));

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值