2015-09-18 2 views
1

Я пытался использовать 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. сериа lVersionUID
  2. имя

Но мой класс является простой класс с тремя свойствами и имеющих примитивные типы данных с некоторыми добытчиками и сеттеров only.However в

Струнный Classname = objClass.getSimpleName();

возвращает мне правильное название класса.

someMethod() не дает мне переменные-члены моего класса. Как я могу их получить?

ответ

3

Вы должны заменить objClass.getClass().getDeclaredFields() с objClass.getDeclaredFields()

objClass класс объект MyClass

objClass.getClass() -класс объект java.lang.Class

Вы получали декларируемые поля в классе java.lang.Class в коде

+0

Удивительный ......... Спасибо, его работа, но вы можете немного уточнить, что было вернувшись ко мне. – nobalG

Смежные вопросы