IntelliJ编译器警告为可变参数传播空数组

问题描述 投票:0回答:1

我有一个在主构造函数中带有varargs参数和键的类,而在二级构造函数中只需要键,那么在调用主构造函数时,我只是传递一个空数组并将其传播*emptyArray<String>

class AppendableParameter(val key: String, vararg parameters: String) {
    constructor(key: String) : this(key, *emptyArray<String>())
}

代码运行正常,但是IntelliJ给了我警告:

Remove redundant spread operator

但是,如果我确实将其删除,它将无法正常运行,因为它期望的是String和“建议的修复程序”从IntelliJ中删除参数,会使构造函数调用无效。

这可能是IntelliJ系统中的错误,还是我缺少一些琐碎的东西?

kotlin intellij-idea compiler-warnings
1个回答
1
投票

我不确定IntelliJ的检查,但是您的辅助构造函数是不必要的。可以使用varargs参数调用方法而无需为所述varargs参数传递任何参数,这与传递空数组相同。换句话说,具有:

class Foo(val key: String, vararg params: String)

已经让您像这样调用主构造函数:

val foo = Foo("key")

如果没有参数时要使用非空数组,则可以指定默认参数:

class Foo(
    val key: String,
    vararg params: String = arrayOf("default", "params")
) 
© www.soinside.com 2019 - 2024. All rights reserved.