Чтение поля в Java
Объект Field описывает одно поле класса.
Метод get принимает экземпляр, у которого
нужно прочитать значение, и возвращает Object,
который затем приводят к нужному типу.
Для открытого поля достаточно найти его по имени
и вызвать get:
import java.lang.reflect.Field;
class Quota {
public int limit = 100;
}
public class Main {
public static void main(String[] args) throws Exception {
Quota unit = new Quota();
Field limitField = Quota.class.getField("limit");
int value = (int) limitField.get(unit);
System.out.println(value);
}
}
Закрытое поле ищут через getDeclaredField.
Перед чтением включают доступ:
import java.lang.reflect.Field;
class Quota {
private int limit = 100;
}
public class Main {
public static void main(String[] args) throws Exception {
Quota unit = new Quota();
Field limitField = Quota.class.getDeclaredField("limit");
limitField.setAccessible(true);
int value = (int) limitField.get(unit);
System.out.println(value);
}
}
Для статического поля в get передают null
вместо экземпляра. Тип значения можно уточнить методом
getType у Field, если имя поля известно
из строки или конфигурации.
Класс Vessel хранит закрытую строку
label. Прочитайте её средствами рефлексии
и выведите в консоль.