栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

看一看从Java Tutorial
Trail中获取字段类型:Reflection
API

基本上,您需要做的是获取所有

java.lang.reflect.Field
班级
并调用
Field#getType()
每个
班级(请检查下面的编辑)。要获取
所有
对象字段,包括公共,受保护,打包和私有访问字段,只需使用
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.StringField: children - Raw type: interface java.util.List - Type args: class foo.Person


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/485877.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号