我正在尝试某个程序,我必须使用Java Reflection API。具体来说,我需要知道给定类中字段的实际数据类型。我发现这样做的方法是使用java.lang.reflect.Field类。此类公开了getGenericType().getTypeName()
和getType().getTypeName()
等方法。这些返回java.lang.String
表示类中引用数据类型的完全限定名称。例如,如果我的课程如下:
class MyClass{Integer age;}
对于上面的场景,我会得到" age"的数据类型。是{" java.lang.Integer
输入String representation
。但是,在我的情况下,String表示没有多大用处,因为我需要实际的Integer数据类型,而不仅仅是其名称的textual / String表示。有没有办法这样做。
答案 0 :(得分:1)
您可以使用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()函数返回一个未实例化的字符串(布尔值)。 你可以用不同的方式处理它内部数据类型列表为here。