【问题标题】:Java interfaces in annotation value注释值中的 Java 接口
【发布时间】:2015-01-04 10:54:58
【问题描述】:

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

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

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

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

public enum SomeEnum implements SomeInterface {
   NAME1, NAME2; 
}

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

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

很郁闷……

【问题讨论】:

    标签: java enums annotations


    【解决方案1】:

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

    原始类型

    字符串

    类或类的调用(第 4.5 节)

    枚举类型

    注解类型

    组件类型为上述类型之一的数组类型 (§10.1)。

    【讨论】:

      猜你喜欢
      • 2021-01-22
      • 1970-01-01
      • 2010-09-13
      • 2011-06-17
      • 1970-01-01
      • 1970-01-01
      • 2016-04-08
      • 2018-08-09
      • 2011-06-15
      相关资源
      最近更新 更多