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.

AspectInheritance2.java 875B

123456789101112131415161718192021222324252627282930313233343536373839
  1. public class AspectInheritance2 {
  2. public static void main(String[] args) {
  3. }
  4. }
  5. abstract aspect Base {
  6. abstract pointcut targets(int i, C c);
  7. after(int i, C c): targets(i, c) {
  8. //
  9. }
  10. }
  11. aspect FullConcrete extends Base {
  12. pointcut targets(int i, SubC subc): //ERROR param types must match exactly
  13. call(void SubC.m(double)) && target(subc) && args(i);
  14. }
  15. aspect ForgetfulConcrete extends Base { //ERROR must concretize abstracts
  16. }
  17. aspect ExplictAbstractConcrete extends Base {
  18. pointcut targets(int i, C c);
  19. abstract pointcut newTargets(); //ERROR no abstracts allowed in concrete
  20. }
  21. aspect PrivateConcrete extends Base {
  22. private pointcut targets(int i, C c): //ERROR can't reduce visibility of decs
  23. call(void C.m(int)) && target(c) && args(i);
  24. }
  25. class C {
  26. public void m(int i) { }
  27. }
  28. class SubC extends C {}