Получить конкретное свойство объекта с помощью java Reflection - PullRequest
0 голосов
/ 10 октября 2010

У меня есть класс User, в котором есть разные объекты, такие как страна, адрес, машина и многие другие. Все внедренные объекты имеют свойство userid, которое является длинным. У меня есть объект User, я хочу установить для свойства userid всех встроенных объектов конкретное значение или значение NULL, используя отражение Java. В противном случае мне нужно написать методы для каждого отдельного объекта.

Ответы [ 3 ]

5 голосов
/ 10 октября 2010

Вы можете использовать класс Apache Common ReflectionUtils и BeanUtils, чтобы помочь вам. ReflectionUtils имеет несколько вспомогательных методов, которые могут помочь в поиске интересующих вас свойств, а BeanUtils имеет вспомогательные методы для заполнения значений свойств / полей.

1 голос
/ 10 октября 2010

Если нет особых причин использовать отражение, лучше не использовать его.

Если вы ищете использование отражения, потому что оно будет удобным или потребует меньше строк кода / сделает код читабельным, обратите внимание, что это не так.

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

Отражение подходит, когда, скажем, имена ваших методов известны только во время выполнения (через файл свойств или что-то еще)

Если по какой-либо причине вам нужно отражение, см. this .

0 голосов
/ 10 октября 2010

Если я правильно понял задачу, вы можете сделать это без раздумий.

abstract class Embedded {
    private static final Set<Integer> obj = ...;
    {
        //init obj
    }
    protected Embedded(int id){
        set.add(id);
    }
    public static Set<Integer> getAllIDs(){
        return obj; //return copy or immutable collection
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...