当我们在Annotation中声明一个数组并使用它时会发生什么:
@interface MyAnno {
String[] names();
}
@MyAnno(names="some value")
class { ... }
虽然元素names
被声明为String的数组,但我们可以将它用作String,提供没有花括号的单个值。我想这是一件好事,这就是SuppressWarnings
的工作原理,我只是想知道当我们这样做时内部会发生什么?编译器如何处理这个?它是用名为names
的字符串替换names
,还是在使用注释的地方应用{}
?还有别的吗?
答案 0 :(得分:2)
来自Java语言规范:
标识符 = ElementValue
如果元素类型是数组类型,则不需要使用花括号来指定元素值对的元素值。如果元素值不是ElementValueArrayInitializer,则其唯一元素是元素值的数组值与元素相关联。
它的语法糖 - 你得到一个包含单个元素的数组。