繁体   English   中英

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

[英]Java Reflection API: How to know the type of field in a Java class

我正在尝试使用Java Reflection API的某个程序。 具体来说,我需要知道给定类中字段的实际数据类型。 我发现这样做的方法是使用java.lang.reflect.Field类。 此类公开诸如getGenericType().getTypeName()getType().getTypeName() 它们返回java.lang.String表示形式,用于表示类中所引用数据类型的完全限定名称。 例如,如果我的课程如下:

class MyClass{Integer age;}

对于上述情况,我将获得“年龄”的数据类型为String representation形式中的java.lang.Integer类型。但是,在我的情况下,String表示形式并没有太大用处,因为我不需要实际的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);
        }
      }

    }

但是请注意原始数据类型(例如:布尔值)。 在这种情况下,fieldType.getName()函数将返回未实例化的字符串(布尔值)。 您可以不同地处理它。 内部数据类型列表在此处

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM