123456789101112131415161718192021222324252627282930 |
- import java.lang.annotation.*;
-
- @Retention(RetentionPolicy.RUNTIME)
- @Target(ElementType.TYPE)
- @interface TestAnnotation1 {}
-
- @Retention(RetentionPolicy.RUNTIME)
- @Target(ElementType.TYPE)
- @interface TestAnnotation2{}
-
- @TestAnnotation1
- class Annotated {}
-
- interface Marker {}
-
- public aspect AnnotationAspect {
-
- declare @type: @TestAnnotation1 *: @TestAnnotation2;
-
- // of cource this matches
- // declare parents: (@TestAnnotation1 *) implements Marker;
- // this matches, too
- // declare parents: (@TestAnnotation2 *) implements Marker;
-
- // this does not match on Annotated
- declare parents: (@TestAnnotation2 *) && !java.lang.annotation.Annotation implements Marker;
- // but this does match on annotated
- // declare parents: (@TestAnnotation1 *) && !java.lang.annotation.Annotation implements Marker;
- }
|