反思:回归错误的领域

nob*_*alG 1 java reflection android

我试图使用反射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);

    }
Run Code Online (Sandbox Code Playgroud)

我正在调用这个方法

someMethod(MyClass.class);
Run Code Online (Sandbox Code Playgroud)

但是我没有把"MyClass"的字段归还给我,而是我得到的字段是:

  1. 的serialVersionUID
  2. 名称

但我的类是一个简单的类,有三个属性,并且只有一些getter和setter的原始dataTypes.但是

String className = objClass.getSimpleName();

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

someMethod()不是给我班级的成员变量.我怎么能得到它们?

Der*_*ung 6

此时应更换objClass.getClass().getDeclaredFields()objClass.getDeclaredFields()

objClass 是的类对象 MyClass

objClass.getClass() 是的类对象 java.lang.Class

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