дзеркало
https://github.com/eclipse-aspectj/aspectj.git
synced 2024-08-27 05:54:38 +02:00
77 рядки
1.7 KiB
Java
77 рядки
1.7 KiB
Java
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);
|
|
}
|
|
|
|
|
|
}
|