java - 反射 : returning wrong fields

标签 java android reflection

我试图使用反射 API 来获取类的字段,我是通过将类作为参数传递给以下方法来实现的

private void someMethod(Class<?> objClass) throws IOException {
        String className= objClass.getSimpleName();
        Map<String, String> fieldsAndDataType = new LinkedHashMap<>();
        for (Field field : objClass.getClass().getDeclaredFields())
        {
            String fieldName = field.getName();
            String fieldDataType = field.getType().toString();
            fieldsAndDataType.put(fieldName, fieldDataType);
        }
        Log.d("here","here "+fieldsAndDataType);

    }

我正在调用这样的方法

someMethod(MyClass.class);

但是我没有返回“MyClass”的字段,而是得到的字段是:

  1. serialVersionUID
  2. 姓名

但是我的类是一个简单的类,具有三个属性并且具有原始数据类型,仅包含一些 getter 和 setter。但是

String className= objClass.getSimpleName();

返回正确的类名。

someMethod() 没有给我类的成员变量。 我怎样才能得到它们?

最佳答案

您应该将 objClass.getClass().getDeclaredFields() 替换为 objClass.getDeclaredFields()

objClassMyClass

的类对象

objClass.getClass()java.lang.Class

的类对象

您在代码中获取类 java.lang.Class 中声明的字段

关于java - 反射 : returning wrong fields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32644369/

相关文章:

java - 使用 FasterXML 将字符串格式的日期转换为 Joda DateTime

java - okhttp和HttpURLConnection的关系

android - 具有 Firebase 身份验证用户的 Firebase 数据库数据结构

java - 在 onViewCreated() 中选择复选框的问题

java - 是否可以使用 Java 反射创建内部类的实例?

c# - 检测对象的类型是否为 .NET Framework 定义的类型

java - 抛出异常并在其他地方捕获它们

android - 使用 Chrome 浏览器在 Android 上搜索输入文本字段

java - 调用未知子类的方法

java - java中的分页?