繁体   English   中英

注释值中的Java接口

[英]Java interfaces in annotation value

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

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

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

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

public enum SomeEnum implements SomeInterface {
   NAME1, NAME2; 
}

但我不能在注释中使用接口:

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

相当令人沮丧...

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

原始类型

类或类的调用(第4.5节)

枚举类型

注释类型

数组类型,其组件类型为前述类型之一(第10.1节)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM