クラスの特定のインスタンスのメソッドをリフレクションでオーバーライドすることはできますか?クラスのインスタンスのメソッドをオーバーライドしますか?
前提条件:ゲームにオーバーライド可能なメソッド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)
}
}
}
}
この種の黒い魔法が本当に必要な場合を除き、バイトコードのエンジニアリングとプロキシを使用して、このようなことを行うことができます。 –
ローカルの匿名の内部クラスメソッドを使用するだけでは不十分なのはなぜですか?実際のクラスのサブクラス化。 – zeller
与えられたインスタンスからサブクラスを動的に作成し、そのクラスのactメソッドをオーバーライドし、以前のインスタンスを破棄する方が簡単でしょうか? –