注释值中的Java接口

时间:2015-01-04 10:54:59

标签: java enums annotations

为什么java编译器不允许在注释中使用接口?

我可以在注释中使用枚举:

public @interface SomeAnnotation {
    SomeEnum[] value() default {};
}

我可以在枚举中实现一个接口:

public enum SomeEnum implements SomeInterface {
   NAME1, NAME2; 
}

但我无法在注释中使用接口:

public @interface SomeAnnotation {
    SomeInterface[] value() default {};
}

非常令人沮丧......

1 个答案:

答案 0 :(得分:1)

因为接口不是有效的返回类型,所以根据JLS,注释类型中声明的方法的返回类型必须是以下之一,否则会发生编译时错误:

  

原始类型

     

字符串

     

类或类的调用(§4.5)

     

枚举类型

     

注释类型

     

一种数组类型,其组件类型是上述类型之一   (§10.1)。