[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[aspectj-users] re: Possible?
|
Sorry if this is a repeat of my previous post:
> Given this situation:
>
> public class A
> {
> private B m_b;
>
> public void method()
> {
> m_b = new B( "Test" );
> m_b.method();
> }
> }
>
> public class B extends D
> {
> public B(String string)
> {
> }
>
> public void method()
> {
> }
> }
>
> public class C extends D
> {
> public C(String string)
> {
> }
>
> public void method()
> {
> }
> }
>
> Is it possible to change A so that when it tries to do this:
>
> m_b = new B( "Test" );
> m_b.method();
>
> it actually effectively does this:
>
> m_b = new C( "Test" );
> m_b.method(); // calls C's method()
>
> In other words can I used AspectJ to substitute another class C
> for class B (as long as it has the same inheritance model and public
> interface) without changing the original source code?
>
>
> If the above is impossible, a related question is:
>
> Can I create an aspect such that if there is a call to a method, that
> method call
> is redirected to another object (that has a method of the same
> signature) instead?
>
> And then when that other object's method call is finished, the
> original object's
> method's code is bypassed altogether?
>
> Thanks,
>
> Ted