1) I have a java class A with has no fields

class A {
}

2) I use an aspect to introduce a field called f into A

aspect X {
  public int A.f = 42;
}

3) I can use f in A as if f were hard coded (in the java source) into A.

new version of A:

class A {
  public static void main(String []argv) {
     A a = new A();
     System.out.println(a.f);
     a.f=100;
     System.out.println(a.f);
  }
}

ajc -1.5 A.java X.java
java A
42
100

What makes this work is that the ITD is PUBLIC (public int A.f = 42). You
have to be compiling the system using ajc and not javac.

cheers,
Andy


On 20 September 2013 08:04, Jozsef Hegedus <[email protected]> wrote:

> Hi,
>
> I think it is not possible to do the following with AspectJ but maybe I am
> wrong :
>
> 1) I have a java class A which has no fields.
> 2) I use an aspect to introduce a field called f into A.
> 3) I can use f in A as if f were hard coded (in the java source) into A.
>
> Is this possible ?
> I know it is possible to something similar by providing default
> implementations
> for interfaces but that is not my question (interfaces can only have final
> fields).
>
> Cheers,
>
> Jozsef
> ______________________________**_________________
> aspectj-users mailing list
> [email protected]
> https://dev.eclipse.org/**mailman/listinfo/aspectj-users<https://dev.eclipse.org/mailman/listinfo/aspectj-users>
>
_______________________________________________
aspectj-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/aspectj-users

Reply via email to