带有重复注释的Java类。可能吗?

时间:2013-03-14 08:41:44

标签: java reflection annotations

可以两次定义具有相同注释的类吗?

例如,我有@interface Annotation

@Annotation(value = 1)
@Annotation(value = 2)
public class MyClass{
}

2 个答案:

答案 0 :(得分:3)

是的,您需要定义Wrapper-Annotation:

@Retention(RetentionPolicy.RUNTIME)
@Documented
@Target({ElementType.TYPE})
public @interface AnotationList {
    Anotation[] value () default {};
}

然后你可以像这样使用它:

@AnotationList({
    @Anotation(value = 1),
    @Anotation(value = 2)
})
public class MyClass{
}

答案 1 :(得分:2)

您可以定义另一个注释@Annotations,其值为@Annotation数组:

public @interface Annotations
{
  public Annotation[] value();
}

用作

@Annotations
(
  {
    @Anotation(value = 1)
  , @Anotation(value = 2)
  }
)
public class MyClass {
}