我想從調用的對象返回更改爲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