注释:何时需要arrayOf

时间:2016-12-16 09:21:32

标签: kotlin

让我们说我们有一个Java注释如下:

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

在Kotlin中,我可以使用Annotation如下:

@Hans(value = "test")

只要我从'值'更改属性名称名字'不允许再使用这种语法,而是需要有arrayOf(..)。

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

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

非常感谢提前 亲切的问候

1 个答案:

答案 0 :(得分:7)

不,这不是错误。 Java专门处理value注释,并允许在使用时省略注释参数名称。 Kotlin遵循这种特殊处理方式,并允许您省略参数名称,允许您编写@Hans("test")。支持数组参数的这种语法需要将参数视为vararg,因此Kotlin会这样做并允许您省略arrayOf