Note: This answer is partially outdated since Java 8 introduced the @Repeatable
annotation (see answer by @mernst). The need for a @Foos
container annotation and dedicated handling still remain though.
Two or more annotations of same type aren’t allowed. However, you could do something like this:
public @interface Foos {
Foo[] value();
}
// pre Java 8
@Foos({@Foo(bar="one"), @Foo(bar="two")})
public void haha() {}
// post Java 8 with @Repeatable(Foos.class) on @Foo
@Foo(bar="one") @Foo(bar="two")
public void haha() {}
You’ll need dedicated handling of Foos
annotation in code though.