注释:arrayOf需要的时候

比方说,我们有一个Java注释如下:

@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Hans { String[] value() default {}; } 

在Kotlin中,我被允许使用注释如下:

 @Hans(value = "test") 

只要我将属性名称从“值”更改为“名称”不允许使用此语法,而不是我需要有arrayOf(..)。

 @Hans(name = arrayOf("test")) 

这是一个错误还是设计决定,如果是这样,背后的原因是什么?

非常感谢提前亲切的问候

不,这不是一个错误。 Java处理value注释特别允许在使用时省略注释参数名称。 Kotlin遵循这种特殊的处理方式,也允许你省略参数名称,允许你写@Hans("test") 。 支持这个数组参数的语法需要将参数视为vararg参数,所以Kotlin arrayOf ,并允许您省略arrayOf