12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import junit.framework.Assert;
-
- public class InterTypeMethods {
-
- public static void main(String[] args) {
- Target t = new Target();
- Assert.assertEquals(23, t.instM(1));
- Assert.assertEquals("foo10", A.instS(t, "foo"));
-
- System.out.println("t: " + t);
-
- Assert.assertEquals(12, SubTarget.staticM());
-
- SubTarget st = new SubTarget();
-
- Assert.assertEquals("100Target10", st.foo());
-
- st.foobar();
- t.mmmm(2);
-
- Assert.assertEquals("xyz-foo", st.onI("xyz-"));
- }
- }
-
- class Target implements I {
- int f = 10;
- static int ss() { return 100; }
-
- String getS() { return "Target" + this.instS("Foo"); }
-
- private int instS(String s) { return 10; }
-
- public int mmmm() { System.err.println("noarg"); return 3;}
-
- }
-
- class SubTarget extends Target {
- String getS() { return "SubTarget"; }
- static int ss() { return 10; }
-
- public void foobar() {
- mmmm(333);
- }
-
- //public int mmmm(int x) { return x; }
- }
-
- interface SuperI {}
-
-
- interface I extends SuperI { }
-
-
-
- aspect A {
- public static String instS(Target t, String s) {
- return t.instS(s);
- }
-
- public int Target.instM(int x) { return x+2 + f + this.f; }
- private String Target.instS(String s) { return s + this.f; }
-
- static int SubTarget.staticM() { return ss() + 2; }
-
- public String SubTarget.foo() { return super.ss() + super.getS(); }
-
- public int Target.mmmm(int i) { System.err.println("onearg"); return 3;}
- public int SubTarget.mmmm(int i) { System.err.println("onearg on Sub"); return 4;}
-
- public String I.v = "foo";
-
- public String I.onI(String a) {
- return a + v;
- }
-
- public String SuperI.onI(String a) {
- return a + "Super";
- }
- }
|