我正在尝试一个必须使用 Java Reflection API 的程序。具体来说,我需要知道给定类中字段的实际数据类型。我发现执行此操作的方法是使用 java.lang.reflect.Field 类。此类公开诸如 getGenericType().getTypeName()
和 getType().getTypeName()
之类的方法。它们返回类中引用的数据类型的完全限定名称的 java.lang.String
表示形式。例如,如果我的类(class)如下:
class MyClass{Integer age;}
对于上面的场景,我会得到“age”的数据类型是“java.lang.Integer
类型的字符串表示形式
”。但是,字符串表示形式将在我的情况下没有多大用处,因为我需要实际的整数数据类型而不仅仅是其名称的文本/字符串表示形式。有什么办法可以做到这一点。
最佳答案
您可以使用 Field getType 方法返回的类。请参阅下面的示例代码:
import java.lang.reflect.Field;
public class Main {
public static void main(String[] args) {
Field[] declaredFields = MyClass.class.getDeclaredFields();
for (Field declaredField : declaredFields) {
Class<?> fieldType = declaredField.getType();
String result=fieldType.getName();
System.out.println(result);
}
}
}
但要小心原始数据类型(例如: boolean 值)。在这种情况下,fieldType.getName() 函数返回一个未实例化的字符串( boolean 值)。 你可以用不同的方式处理它。内部数据类型列表为 here .
关于Java反射API : How to know the type of field in a Java class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31510955/