首页 > 解决方案 > IntelliJ 编译器警告为可变参数传播空数组

问题描述

我有这个类,它在主构造函数中接受一个可变参数和一个键,以及一个只需要键的辅助构造函数,然后,在调用主构造函数时,我只传递一个空数组并传播它*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 系统中的错误,还是我遗漏了一些微不足道的东西?

标签: kotlinintellij-ideacompiler-warnings

解决方案


我不能说 IntelliJ 发出的警告,但是您的辅助构造函数是不必要的。可以使用可变参数调用方法,而无需为所述可变参数传递任何参数,这与传递空数组相同。换句话说,拥有:

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

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

val foo = Foo("key")

如果你想在没有给出参数时使用非空数组,那么你可以指定一个默认参数:

class Foo(
    val key: String,
    vararg params: String = arrayOf("default", "params")
) 

推荐阅读