Java反射API : How to know the type of field in a Java class

标签 java

我正在尝试一个必须使用 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/

相关文章:

java - Eclipse 异常与 java.lang.OutOfMemoryError : Java heap space

java - 从oracle数据库获取数据时浏览器中504网关超时

java - 更改 WAS 7 上特定 Web 应用程序的 System.out.println 输出目标

java - 不兼容的类型以及尝试 .get 自定义适配器 (Android)

java servlet cos多部分: save inpustream for later storage

java - 新手创建游戏 - 尝试干净的代码 - 继承

JAVA 如何将数字分组应用于方程

java - 难以在 Eclipse 中加载 FXML 文件

java - Springboot API 返回空响应

Java对象等于方法不起作用