Kotlin:如何将数组传递给 Java 注释

标签 kotlin kotlin-interop

我想使用 @OneOf来自 package io.dropwizard.validation; 的注释

Java 用法:

@OneOf(value = {"m", "f"})

Kotlin 用法:???

我试过这个:

 @OneOf(value = arrayOf("m", "f"))

还有这个:

 @OneOf(value = ["m", "f"])

(编辑:这个例子从 Kotlin 1.2 开始工作,它支持注释中的数组文字,感谢@BakaWaii)

我得到的只是:

Type inference failed. Expected type mismatch:

required: String

found: Array<String>

Kotlin 版本:1.1.2-2

最佳答案

value 参数在 Kotlin 中自动转换为可变参数,如 http://kotlinlang.org/docs/reference/annotations.html#java-annotations 中所述。 .

这种特殊情况的正确语法是 @OneOf("m", "f")

关于Kotlin:如何将数组传递给 Java 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44069045/

相关文章:

kotlin - 谁能在这里详细解释 Kotlin/Native spinner 应用程序项目结构?还有关于不同模块如何工作的细节

java - kotlin - 平台类型/方法的非空标记

java - 评估具有依赖项的 kotlin 脚本文件

kotlin - 如何解决方法引用中的重载歧义?

clojure - 如何在 Kotlin 中运行 Clojure?

java - 使用 ASM 从 Java 库中对 Kotlin 类进行代理

android - 使用新的 kotlin 1.1 构建错误,kapt 无法解析数据绑定(bind)参数

java - Kotlin函数参数: how to define a function which can have a trailing lambda or interface as a parameter?

android - 在函数之间传递 MutableLiveData

kotlin - Kotlin Coroutine Flow api是否具有Rx Subject等桥接工具?