¿Puedo anular un método privado en Java?
Sé que puedo usar la reflexión para invocar un método privado y para obtener o establecer el valor de una variable privada, pero quiero anular un método.
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;
}
}
Quiero elmain
método enSubClass
imprimir2
, pero se imprime1
. He oído que esto se puede hacer a través de la reflexión, pero no puedo entender cómo. Si no es reflexión, ¿alguien sabe de otra manera de hacerlo? (Aparte de hacerSuperClass.getInt()
protegido, o copiando y pegando elprintInt()
método enSubClass
.) Si realmente no es posible anular el método privado, ¿hay alguna forma de colocar algún tipo de activador que invoque un método en mi subclase antes o después de que se ejecute el método privado?