我有一个在主构造函数中带有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系统中的错误,还是我缺少一些琐碎的东西?
我不确定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")
)