我试图使用反射 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”的字段,而是得到的字段是:
- serialVersionUID
- 姓名
但是我的类是一个简单的类,具有三个属性并且具有原始数据类型,仅包含一些 getter 和 setter。但是
String className= objClass.getSimpleName();
返回正确的类名。
someMethod()
没有给我类的成员变量。
我怎样才能得到它们?
最佳答案
您应该将 objClass.getClass().getDeclaredFields()
替换为 objClass.getDeclaredFields()
objClass
是MyClass
objClass.getClass()
是java.lang.Class
您在代码中获取类 java.lang.Class
中声明的字段
关于java - 反射 : returning wrong fields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32644369/