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.

TopmostImplements.java 1.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import org.aspectj.testing.Tester;
  2. import java.lang.reflect.Method;
  3. // PR#126
  4. public class TopmostImplements {
  5. public static void main(String[] args) { test(); }
  6. public static void test() {
  7. BC1 bc1 = new BC1();
  8. BC2 bc2 = new BC2();
  9. String m1 = "";
  10. String m2 = "";
  11. try {
  12. m1 = bc1.getClass().getMethod("m1", null).toString();
  13. m2 = bc2.getClass().getMethod("m1", null).toString();
  14. } catch ( NoSuchMethodException nsme ) {
  15. Tester.check(false, "method not found");
  16. }
  17. Tester.checkEqual(m1, "public java.lang.String B.m1()", "from extends, implements");
  18. Tester.checkEqual(m2, "public java.lang.String B.m1()", "from extends");
  19. Tester.checkEqual(bc1.m1(), "BC1", "from extends, implements");
  20. Tester.checkEqual(bc2.m1(), "BC2", "from extends");
  21. }
  22. }
  23. aspect Introducer {
  24. public String A.m1() { return getName(); }
  25. }
  26. interface A {
  27. String getName();
  28. }
  29. class B implements A {
  30. public String getName() { return "B"; }
  31. }
  32. class BC1 extends B implements A {
  33. public String getName() { return "BC1"; }
  34. }
  35. class BC2 extends B {
  36. public String getName() { return "BC2"; }
  37. }