假设我们有一个Java注释如下:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Hans {
String[] value() default {};
}
Run Code Online (Sandbox Code Playgroud)
在Kotlin中,我可以使用Annotation如下:
@Hans(value = "test")
Run Code Online (Sandbox Code Playgroud)
只要我将属性名称从'value'更改为'name',就不允许再使用此语法,而是需要使用arrayOf(..).
@Hans(name = arrayOf("test"))
Run Code Online (Sandbox Code Playgroud)
这是一个错误或设计决定,如果是这样的原因是什么原因.
非常感谢提前亲切的问候
不,这不是一个错误.Java value特别处理注释,并允许在使用时省略注释参数名称.Kotlin遵循这种特殊处理方式,并允许您省略参数名称,允许您编写@Hans("test").支持数组参数的这种语法需要将参数视为vararg,因此Kotlin会这样做,并允许您省略arrayOf.
| 归档时间: |
|
| 查看次数: |
207 次 |
| 最近记录: |