我想从调用的对象返回更改为constuctorAspectJ的构造力工厂模式
FROM
public class A {
public A(){
}
public String sayHello() {
return "hello";
}
public String foo() {
return "foo";
}
}
TO
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"
一个是instaceof AWrapped
我明白,这通常会用工厂模式来完成,但我没有访问的代码或使新A的代码。 A可以创建的地方有1000个。
看来,Aspectj可能会做的伎俩,但我不太了解它,如果AspectJ会做的窍门如何绕过无限包装我需要知道它从内部和方面构建,所以它不会再次包装它。
感谢您的帮助 乔恩
如果你稍后创建一个'new A()',它仍然会说“你好”。猜猜,你最后一个例子的第一行应该是'A a = new AWrapped()' – 2012-04-24 04:20:14
感谢Marko,这是有道理的,我仍然需要解决这个问题,所以我会尝试做一个自定义类加载器,看看我能不能得到在那附近。再次感谢 – user898333 2012-04-26 01:01:00
@ user898333,这似乎是要走的路。请一旦你解决了你的问题,在这里发布它的大纲作为你的问题的答案。 – Yaneeve 2012-04-27 07:42:31