Я пытаюсь получить значение из переменной класса путем отражения. Например, у меня есть класс Car
, и у него есть свойство engine. Кроме того, в классе Engine
я переопределил метод toString()
и определил еще один метод hello()
.
А потом, когда я пытаюсь получить значение через
getDeclaredField()
метод, похоже, что я получаю правильное значение Engine
экземпляр, но по некоторым причинам я не могу вызвать метод hello()
для него.
Автомобиль класс
public class Car {
final Engine engine = new Engine();
}
Двигатель Класс
public class Engine {
public void hello() {
System.out.println("hello");
}
@Override
public String toString() {
return "Engine";
}
}
Основной Класс
public class Main {
public static void main(String[] args) {
try {
Field field = Car.class.getDeclaredField("engine");
Object value = field.get(new Car());
// It's print Engine as expected
System.out.println(value);
// But I can't call hello() method
// value.hello()
} catch (NoSuchFieldException | IllegalAccessException e) {
System.out.println("Exception");
}
}
}