12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import org.aspectj.testing.Tester;
-
- public class SuperField {
- public static void main(String[] args) {
- Derived d = new Derived();
- Tester.checkAndClearEvents(new String[] {
- "set Base on <Derived>",
- "set Derived on <Derived>",
- });
- d.m1();
- Tester.checkAndClearEvents(new String[] {
- "get Derived on <Derived>",
- "Derived",
- });
- d.m2();
- Tester.checkAndClearEvents(new String[] {
- "get Derived on <Derived>",
- "Derived",
- });
- d.m3();
- Tester.checkAndClearEvents(new String[] {
- "get Base on <Derived>",
- "Base",
- });
- d.m4();
- Tester.checkAndClearEvents(new String[] {
- "get Base on <Derived>",
- "set BaseNew on <Derived>",
- "get BaseNew on <Derived>",
- "BaseNew",
- });
- Tester.printEvents();
- }
- }
-
- class Base {
- String s = "Base";
- public String toString() { return "<Base>"; }
- }
-
- class Derived extends Base {
- String s = "Derived";
-
-
- void m1() {
- Tester.event(s);
- }
-
- void m2() {
- Tester.event(this.s);
- }
-
- void m3() {
- Tester.event(super.s);
- }
-
- void m4() {
- super.s += "New";
-
- Tester.event(super.s);
- }
-
- public String toString() { return "<Derived>"; }
- }
-
- aspect A {
- after(Object o) returning (String v): target(o) && get(String s) {
- Tester.event("get " + v + " on " + o);
- }
-
- before(Object o, String v): target(o) && set(String s) && args(v) {
- Tester.event("set " + v + " on " + o);
- }
-
-
- }
|