Java Reflection API:如何知道Java类中的字段类型

时间:2015-07-20 07:31:52

标签: java

我正在尝试某个程序,我必须使用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表示。有没有办法这样做。

1 个答案:

答案 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