看一看从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



