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

Ale*_*lex 10 java kotlin

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

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

编译器报告TYPE_MISMATCH 必需:kotlin.Array <kotlin.String>找到:kotlin.String

我试过了

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

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

我怎样才能满足Kotlin编译器的要求?

Java只接受

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

Cor*_*han 6

您可以像这样在Kotlin中声明一个常量:

const val LG_PACKAGE = "com.myapp"
Run Code Online (Sandbox Code Playgroud)

但是,关于编译时常量的kotlin文档指出,它们只能是String类型或原始类型。因此,如果要使用常量,可以得到的最接近的结果是:

const val LG_PACKAGE = "com.myapp"

@EnableJpaRepositories(basePackages = arrayOf(LG_PACKAGE))
@EntityScan(basePackages = arrayOf(LG_PACKAGE))
open class LgApp {
Run Code Online (Sandbox Code Playgroud)


Ale*_*lex 1

有时候答案很简单,一不小心就发现了

\n\n
array("-groups")\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
@Parameter(names = "-groups", description = "Comma-separated list of group names to be run")\npublic String groups;\n
Run Code Online (Sandbox Code Playgroud)\n\n

正如我上面提到的\xe2\x80\x99ve。

\n