Java 注释中用作单个值的数组元素
当我们在注释中声明数组并像这样使用它时会发生什么:Java 注释中用作单个值的数组元素,java,compilation,annotations,Java,Compilation,Annotations,当我们在注释中声明数组并像这样使用它时会发生什么: @interface MyAnno { String[] names(); } @MyAnno(names="some value") class { ... } 尽管元素names被声明为字符串数组,但我们可以将其用作字符串,提供一个没有大括号的值。我想这是件好事,SuppressWarnings就是这样工作的,我只想知道当我们这样做时,内部会发生什么?编译器如何处理这个问题?它是用名为names的字符串替换names,还是在使用
@interface MyAnno {
String[] names();
}
@MyAnno(names="some value")
class { ... }
尽管元素
names
被声明为字符串数组,但我们可以将其用作字符串,提供一个没有大括号的值。我想这是件好事,SuppressWarnings
就是这样工作的,我只想知道当我们这样做时,内部会发生什么?编译器如何处理这个问题?它是用名为names
的字符串替换names
,还是在使用注释的地方应用{}
?还有什么?来自Java语言规范:
标识符=元素值
如果元素类型是数组类型,则不需要使用大括号来指定元素值对的元素值。如果元素值不是ElementValueArrayInitializer,则唯一元素为元素值的数组值与该元素关联
这是语法上的甜点——你得到一个只有一个元素的数组。“如果元素值不是ElementValueArrayInitializer,那么一个数组值(其唯一元素是元素值)就会与该元素相关联”,所以就是这样。