Задать вопрос
formatko
@formatko
Java developer

Как получить значение поля в классе через название поля?

Имеется объект модели с кучей полей. Надо его сравнивать с другим объектом, но не по всем полям а только по выборочным. Как можно узнать значение поля по например названию поля чтобы в последствии можно было сравнивать?
  • Вопрос задан
  • 12568 просмотров
Подписаться 2 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 4
@brutal_lobster
Комментировать
CTAKAH4uK
@CTAKAH4uK
//has object
Class<? extends Object> clazz = object.getClass();
Field[] fields = clazz.getDeclaredFields();
for(Field field: fields){
    String fieldName = field.getName();
    if(!field.isAccessible()){
        field.setAccessible(true);
    }
    Object value = field.get(object);
}
Ответ написан
Комментировать
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Ну, как-то через java reflection
// Одно поле
Class c = obj.getClass(); 
Field nameField = c.getField("name");
// Или все поля
Class c = obj.getClass(); 
Field[] publicFields = c.getFields(); 
for (Field field : publicFields) { 
    Class fieldType = field.getType(); 
    System.out.println("Имя: " + field.getName()); 
    System.out.println("Тип: " + fieldType.getName()); 
}

Почитать поболее здесь www.quizful.net/post/java-reflection-api например.
Ответ написан
Комментировать
@Kamerad
Class class = instance.getClass();
Field field = class.get("название поля");
"тип поля" value = field.get(instance);
Получите значение поля. А вообще непонятно из вопроса что известно на этапе написания кода.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы