反思:返回错误的字段

时间:2015-09-18 05:16:28

标签: 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&#39;”的字段,而是获得的字段是:

  1. 的serialVersionUID
  2. 名称
  3. 但是我的类是一个简单的类,有三个属性,只有原始的dataTypes,只有一些getter和setter。但是

      

    String className = objClass.getSimpleName();

    正在给我正确的班级名称。

    someMethod()没有给我班级的成员变量。 我怎么能得到它们?

1 个答案:

答案 0 :(得分:6)

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

objClassMyClass

的类对象

objClass.getClass()java.lang.Class

的类对象

您在代码中的java.lang.Class课程中获得了声明的字段