java中类字段_如何确定Java中通用字段的类型?

本文介绍如何使用Java的反射API获取类的所有字段,包括公共、受保护、默认和私有访问级别的字段,并详细展示了如何获取字段的类型和泛型信息。示例代码展示了遍历`Person`类的字段,打印其类型和泛型类型参数。
摘要由CSDN通过智能技术生成

小编典典

基本上,您需要做的是获取所有java.lang.reflect.Field班级

所有

对象字段,包括公共,受保护,打包和私有访问字段,只需使用Class.getDeclaredFields()。像这样:

for (Field field : Person.class.getDeclaredFields()) {

System.out.format("Type: %s%n", field.getType());

System.out.format("GenericType: %s%n", field.getGenericType());

}

编辑:

正如哇哇在评论中指出的那样,您实际上需要调用Field#getGenericType(),检查返回的Type是否为a

ParameterizedType,然后相应地获取参数。使用ParameterizedType#getRawType()和ParameterizedType#getActualTypeArgument()分别获取a的原始类型和类型参数的数组ParameterizedType。以下代码演示了这一点:

for (Field field : Person.class.getDeclaredFields()) {

System.out.print("Field: " + field.getName() + " - ");

Type type = field.getGenericType();

if (type instanceof ParameterizedType) {

ParameterizedType pType = (ParameterizedType)type;

System.out.print("Raw type: " + pType.getRawType() + " - ");

System.out.println("Type args: " + pType.getActualTypeArguments()[0]);

} else {

System.out.println("Type: " + field.getType());

}

}

并输出:

Field: name - Type: class java.lang.String

Field: children - Raw type: interface java.util.List - Type args: class foo.Person

2020-09-09

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值