注释中的数组元素用作单个值

时间:2018-04-01 05:06:38

标签: java compilation annotations

当我们在Annotation中声明一个数组并使用它时会发生什么:

@interface MyAnno {
    String[] names();
}

@MyAnno(names="some value")
class { ... }

虽然元素names被声明为String的数组,但我们可以将它用作String,提供没有花括号的单个值。我想这是一件好事,这就是SuppressWarnings的工作原理,我只是想知道当我们这样做时内部会发生什么?编译器如何处理这个?它是用名为names的字符串替换names,还是在使用注释的地方应用{}?还有别的吗?

1 个答案:

答案 0 :(得分:2)

来自Java语言规范:

标识符 = ElementValue

如果元素类型是数组类型,则不需要使用花括号来指定元素值对的元素值。如果元素值不是ElementValueArrayInitializer,则其唯一元素是元素值的数组值与元素相关联。

它的语法糖 - 你得到一个包含单个元素的数组。