Извлечение всех полей из класса Java - PullRequest
2 голосов
/ 10 марта 2012

Мне было интересно, есть ли простой способ получить все определенные поля и их типы в данном классе. Это было бы легко, если бы класс содержал только примитивные типы.

Ex

public class A
{
    int aX;
    String aS;
};

public class B
{
    int bX;
    String bS;
    A aObj;
};

public Class C
{
    boolean bC;
    B bObj;
};

Учитывая класс C, я бы хотел рекурсивно извлечь все поля (aX, aS, bX, bS, bC и т. Д.). Хотя это не особенно сложно достичь, я хотел бы знать, существуют ли какие-либо существующие библиотеки, в которых я мог бы использовать что-то вроде Джексона Джсона, который, я думаю, имел бы некоторые служебные функции, которые бы достигли этого.

Спасибо

1 Ответ

3 голосов
/ 10 марта 2012

Самый простой способ:

public static void run(Class c) {
  for(Field f : c.getFields()) {
    if(!f.getType().isPrimitive())
      System.out.println(f.getName());
    else
      run(f.getType());
  }
}

Использование внешних библиотек - особенно в Java - не очень хорошая идея, если вы используете только небольшую их часть.Дополнительная компиляция и загрузка делают вашу программу медленнее, чем нужно, и занимают слишком много места, чтобы того стоить.

Справка: Java API в классе .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...