Czy mogę zastąpić prywatną metodę w Javie?
Wiem, że mogę użyć refleksji, aby wywołać metodę prywatną i uzyskać lub ustawić wartość zmiennej prywatnej, ale chcę zastąpić metodę.
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;
}
}
Chcęmain
metoda wSubClass
wydrukować2
, ale drukuje1
. Słyszałem, że można to zrobić poprzez refleksję, ale nie wiem, jak to zrobić. Jeśli nie, to czy ktoś wie, jak to zrobić? (Inne niż robienieSuperClass.getInt()
chronione lub kopiowanie i wklejanieprintInt()
metoda doSubClass
.) Jeśli faktycznie nadpisanie metody prywatnej nie jest możliwe, czy istnieje sposób na umieszczenie na niej pewnego rodzaju wyzwalacza, który wywoła metodę w mojej podklasie przed lub po wykonaniu metody prywatnej?