org.aspectj/tests/bugs162/pr198341/AnnotationAspect.java

31 líneas
815 B
Java
Original Vista normal Histórico

2008-08-22 23:07:25 +02:00
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;
}