Javaでは、を使用して作成したクラスのメソッドをオーバーライドできますreflection
か? たとえば、次のクラスがあるとします。
public class MyObject
{
public String foo, bar;
public MyObject(String foo)
{
this.foo = foo;
this.bar = foo + "bar";
}
public void setBar(String bar)
{
this.bar = bar;
}
}
setBar
そして、あるクラスでは、それを直接作成し、次のようにそのメソッドをオーバーライドしたいと考えています。
MyObject obj = new MyObject("something")
{
@Override
public void setBar(String bar)
{
this.bar = this.foo;
}
};
リフレクションを使用して、これと同じ方法でメソッドをオーバーライドする方法はありますか? たぶん、このようなものですか?:
Class<?> _class = Class.forName("com.example.MyObject");
Constructor<?> _constructor = _class.getConstructor(new Class<?>[]{String.class});
Method m = _class.getMethod("setBar", new Class<?>[]{String.class});
Object obj = _constructor.newInstance("Foo String")
{
m = new Method(new Class<?>[]{String.class})
{
System.out.println("Foobar");
}
};
そうでない場合、これを行う他の方法、または役立つ外部ライブラリはありますか? バインドされた値を変更するために、setter メソッドにリスナーを追加する方法を探しています。