Отражение Java - Получить все имена переменных экземпляра класса - PullRequest
4 голосов
/ 05 ноября 2010

Я пишу приложение для Android, которое требует привязки объекта JSON к объекту домена с ключами из JSON в качестве переменных экземпляра.Поскольку существует несколько доменных сущностей, каждая из которых имеет разные переменные экземпляра, с которыми JSON необходимо связать приложение, я хотел бы написать такой метод, как следующий:

  1. Перебрать все экземплярыпеременные из домена
  2. , если в JSON существует ключ с именем переменной экземпляра, возьмите значение для этого ключа из JSON и задайте переменную экземпляра домена с этим именем ключа, равным этому значению.

Причина, по которой я заинтересован в связывании класса с JSON, заключается в том, что, если JSON изменяется по какой-то причине, я не хочу, чтобы он ломал приложение, когда переменная экземпляране существует в домене приложения для определенного ключа JSON.

Заранее благодарим за любую помощь!

Ответы [ 2 ]

3 голосов
/ 05 ноября 2010

Скорее всего, вы хотите использовать библиотеку json, которая сделает это за вас. Джексон - хороший пример, который также используется Spring MVC.

Чтобы ответить на ваш вопрос, вы можете использовать getDeclaredFields() в классе и java.lang.reflect.Modifier.isStatic(), чтобы проверить, является ли поле

private static class Foo {
    private static long car;
    private int bar;
    private String baz;
}

public static void main(String[] args) {
    for (Field field : Foo.class.getDeclaredFields()) {
        if (!Modifier.isStatic(field.getModifiers())) {
            System.out.println("Found non-static field: " + field.getName());                
        }
    }
}

Это будет распечатано:

Found non-static field: bar
Found non-static field: baz
0 голосов
/ 05 ноября 2010

ответ Оксайта правильный, но я бы взял его с крошкой соли. Не каждое поле содержит свойство, которое должно быть открыто опубликовано. Используемый механизм - Java Beans Introspector . Вы можете использовать мои ответы на эти предыдущие вопросы в качестве ссылки:

Дополнительная справка:

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