¿Es posible anular de forma reflexiva un método para una instancia determinada de una clase?anula un método para una instancia de una clase?
Precondición: el juego tiene un método anulable act()
.
public class Foo {
public Method[] getMethods() {
Class s = Game.class;
return s.getMethods();
}
public void override()
{
Method[] arr = getMethods()
for (int i = 0; i<arr.length; i++)
{
if (arr[i].toGenericString().contains("act()")
{
// code to override method (it can just disable to method for all i care)
}
}
}
}
Es posible hacer algo como esto usando ingeniería de byte y proxies, a menos que realmente necesite este tipo de magia negra, solo use composición y delegación. –
¿Por qué no es suficiente usar un método de clase interna anónima local? Subclasificación de la clase real. – zeller
¿sería más fácil crear dinámicamente una subclase a partir de una instancia determinada, anular el método act en esa clase y deshacerse de la instancia anterior? –