@Target(value={ElementType.TYPE})
@Retention(value=RetentionPolicy.RUNTIME)
public @interface FooList {
public Foo[] value();
}
@Retention(value=RetentionPolicy.RUNTIME)
public @interface Foo {
public String name();
}
@FooList({
@Foo(name="ABC"),
@Foo(name="XyZ")
})
@Foo(name="EFG") // no compile error here
public class Bar {
}
@Foo должен находиться только внутри @FooList. Но ошибка компиляции отсутствует, когда @Foo аннотируется непосредственно в типе Bar.
Java: Как предотвратить появление аннотаций не верхнего уровня в типе? например, [code]@Target(value={ElementType.TYPE}) @Retention(value=RetentionPolicy.RUNTIME) public @interface FooList { public Foo[] value(); }
@Retention(value=RetentionPolicy.RUNTIME) public @interface Foo { public String name(); }
@FooList({ @Foo(name="ABC"), @Foo(name="XyZ") }) @Foo(name="EFG") // no compile error here public class Bar { } [/code] @Foo должен находиться только внутри @FooList. Но ошибка компиляции отсутствует, когда @Foo аннотируется непосредственно в типе Bar.