Могу ли я переопределить закрытый метод в Java?
Я знаю, что могу использовать рефлексию для вызова закрытого метода и для получения или установки значения закрытой переменной, но я хочу переопределить метод.
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
.
I've heard this can be done through reflection, but I can't figure out how.
If not reflection, does anyone know of another way of doing it?
(Other than making SuperClass.getInt()
защищены, или копирование и вставкаprintInt()
метод вSubClass
.)
If actually overriding the private method is not possible, is there a way of placing some sort of trigger on it that will invoke a method in my sub-class either before or after the private method executes?