我试图使用反射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;”的字段,而是获得的字段是:
但是我的类是一个简单的类,有三个属性,只有原始的dataTypes,只有一些getter和setter。但是
String className = objClass.getSimpleName();
正在给我正确的班级名称。
someMethod()
没有给我班级的成员变量。
我怎么能得到它们?
答案 0 :(得分:6)
您应该将objClass.getClass().getDeclaredFields()
替换为objClass.getDeclaredFields()
objClass
是MyClass
objClass.getClass()
是java.lang.Class
您在代码中的java.lang.Class
课程中获得了声明的字段