让我们说我们有一个Java注释如下:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Hans {
String[] value() default {};
}
在Kotlin中,我可以使用Annotation如下:
@Hans(value = "test")
只要我从'值'更改属性名称名字'不允许再使用这种语法,而是需要有arrayOf(..)。
@Hans(name = arrayOf("test"))
这是一个错误或设计决定,如果是这样,背后的原因是什么。
非常感谢提前 亲切的问候
答案 0 :(得分:7)
不,这不是错误。 Java专门处理value
注释,并允许在使用时省略注释参数名称。 Kotlin遵循这种特殊处理方式,并允许您省略参数名称,允许您编写@Hans("test")
。支持数组参数的这种语法需要将参数视为vararg
,因此Kotlin会这样做并允许您省略arrayOf
。