Я знаю, что могу использовать отражение для вызова частного метода и получить или установить значение частной переменной, но я хочу переопределить метод.
public class SuperClass {
public void printInt() {
System.out.println("I am " + getClass() + ". The int is " + getInt());
}
private int getInt() {
return 1;
}
}
public class SubClass extends SuperClass {
public static void main(String[] args) {
(new SubClass()).printInt();
}
public int getInt() {
return 2;
}
}
Я хочу, чтобы метод main
в SubClass
распечатывал 2
, но он печатает 1
.
Я слышал, что это можно сделать с помощью размышлений, но я не могу понять, как это сделать.
Если не отражение, знает ли кто-нибудь другой способ сделать это?
(За исключением защиты SuperClass.getInt()
, или копирования и вставки метода printInt()
в SubClass
.)
Если фактическое переопределение частного метода невозможно, существует ли способ размещения на нем какого-то триггера, который будет вызывать метод в моем подклассе до или после выполнения частного метода?