Java 互操作性:如何在 Kotlin 中声明编译时数组常量?

2022-09-04 22:42:51

我有这个Java注释声明,并希望在Kotlin中使用它

class CurlCommand {
    Parameter(names = "-groups", description = "Comma-separated list of group names to be run")
    var groups: Array<String>? = null
}

编译器报告TYPE_MISMATCH必需:kotlin。Array<kotlin.字符串> 已找到:kotlin。字符串

我试过了

Parameter(names = Array<String>(1, {i-> "-groups"}), description = "Comma-separated list of group names to be run")
var groups: Array<String>? = null

并得到“错误:(20,23)Kotlin:注释参数必须是编译时常量”

如何满足 Kotlin 编译器的要求?

Java简单地接受

@Parameter(names = "-groups", description = "Comma-separated list of group names to be run")
public String groups;

答案 1

你在 Kotlin 中声明一个常量,如下所示:

const val LG_PACKAGE = "com.myapp"

但是,编译时常量的 kotlin 文档说它们只能是 String 类型或基元类型。因此,如果要使用常量,您可以获得的最接近的是:

const val LG_PACKAGE = "com.myapp"

@EnableJpaRepositories(basePackages = arrayOf(LG_PACKAGE))
@EntityScan(basePackages = arrayOf(LG_PACKAGE))
open class LgApp {

答案 2

有时答案很简单,一旦一个人偶然发现它

array("-groups")

虽然 Kotlin 转换器给了我这个代码

@Parameter(names = "-groups", description = "Comma-separated list of group names to be run")
public String groups;

正如我上面提到的。


推荐