You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

InterTypeMethods.java 1.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import junit.framework.Assert;
  2. public class InterTypeMethods {
  3. public static void main(String[] args) {
  4. Target t = new Target();
  5. Assert.assertEquals(23, t.instM(1));
  6. Assert.assertEquals("foo10", A.instS(t, "foo"));
  7. System.out.println("t: " + t);
  8. Assert.assertEquals(12, SubTarget.staticM());
  9. SubTarget st = new SubTarget();
  10. Assert.assertEquals("100Target10", st.foo());
  11. st.foobar();
  12. t.mmmm(2);
  13. Assert.assertEquals("xyz-foo", st.onI("xyz-"));
  14. }
  15. }
  16. class Target implements I {
  17. int f = 10;
  18. static int ss() { return 100; }
  19. String getS() { return "Target" + this.instS("Foo"); }
  20. private int instS(String s) { return 10; }
  21. public int mmmm() { System.err.println("noarg"); return 3;}
  22. }
  23. class SubTarget extends Target {
  24. String getS() { return "SubTarget"; }
  25. static int ss() { return 10; }
  26. public void foobar() {
  27. mmmm(333);
  28. }
  29. //public int mmmm(int x) { return x; }
  30. }
  31. interface SuperI {}
  32. interface I extends SuperI { }
  33. aspect A {
  34. public static String instS(Target t, String s) {
  35. return t.instS(s);
  36. }
  37. public int Target.instM(int x) { return x+2 + f + this.f; }
  38. private String Target.instS(String s) { return s + this.f; }
  39. static int SubTarget.staticM() { return ss() + 2; }
  40. public String SubTarget.foo() { return super.ss() + super.getS(); }
  41. public int Target.mmmm(int i) { System.err.println("onearg"); return 3;}
  42. public int SubTarget.mmmm(int i) { System.err.println("onearg on Sub"); return 4;}
  43. public String I.v = "foo";
  44. public String I.onI(String a) {
  45. return a + v;
  46. }
  47. public String SuperI.onI(String a) {
  48. return a + "Super";
  49. }
  50. }