我想将对象返回从调用更改为构造函数
从
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 的代码。并且有 1000 多个地方可以创建 A。
似乎 Aspectj 可能会做到这一点,但我对此了解不多,如果 AspectJ 能做到这一点,我将如何绕过无限包装,我需要知道它是从内部和方面构建的,因此它不会再次包装它。
感谢乔恩的帮助