オブジェクトの戻り値を呼び出しからコンストラクターに変更したい
から
public class A {
public A(){
}
public String sayHello() {
return "hello";
}
public String foo() {
return "foo";
}
}
に
public class AWrapped extends A {
private A wrapped;
public AWrapped() {
super();
}
public AWrapped(A pWrapped) {
wrapped=pWrapped;
}
public String foo() {
return wrapped.foo();
}
public String sayHello {
return "gday mate";
}
}
やりたいことは、呼び出しから返されるオブジェクトを変更することです
A a = new A();
a.sayHello() returns "gday mate"
a は AWrapped のインスタンスです
これは通常、ファクトリ パターンで行われることは理解していますが、A のコードや新しい A を作成するコードにはアクセスできません。そして、Aを作成できる場所は何千もあります。
Aspectj がトリックを実行する可能性があるようですが、私はそれについてあまり知りません。AspectJ がトリックを実行する場合、無限のラッピングを回避する方法を知る必要があります。
助けてくれてありがとうジョン