IntelliJ 编译器警告为 varargs 传播空数组
IntelliJ compiler warning on spreading empty array for varargs
我有这个class,它在主构造函数中接受一个可变参数和一个键,还有一个只需要键的辅助构造函数,然后,在调用主构造函数时,
我只是传递一个空数组并将其传播 *emptyArray<String>
.
class AppendableParameter(val key: String, vararg parameters: String) {
constructor(key: String) : this(key, *emptyArray<String>())
}
代码工作正常,但 IntelliJ 给了我一个警告:
Remove redundant spread operator
如果我确实删除了它,它将无法正常工作,因为它会出现 String
,而 "suggested fix"
来自 IntelliJ 的只是删除参数,使构造函数调用无效。
这可能是 IntelliJ 系统中的错误,还是我遗漏了一些微不足道的东西?
我不能说 IntelliJ 发出的警告,但你的辅助构造函数是不必要的。可以调用带有可变参数的方法而不为所述可变参数传递任何参数,这与传递空数组相同。换句话说,有:
class Foo(val key: String, vararg params: String)
我们已经让您像这样调用主构造函数了:
val foo = Foo("key")
如果你想在没有给出参数时使用非空数组,那么你可以指定一个默认参数:
class Foo(
val key: String,
vararg params: String = arrayOf("default", "params")
)
我有这个class,它在主构造函数中接受一个可变参数和一个键,还有一个只需要键的辅助构造函数,然后,在调用主构造函数时,
我只是传递一个空数组并将其传播 *emptyArray<String>
.
class AppendableParameter(val key: String, vararg parameters: String) {
constructor(key: String) : this(key, *emptyArray<String>())
}
代码工作正常,但 IntelliJ 给了我一个警告:
Remove redundant spread operator
如果我确实删除了它,它将无法正常工作,因为它会出现 String
,而 "suggested fix"
来自 IntelliJ 的只是删除参数,使构造函数调用无效。
这可能是 IntelliJ 系统中的错误,还是我遗漏了一些微不足道的东西?
我不能说 IntelliJ 发出的警告,但你的辅助构造函数是不必要的。可以调用带有可变参数的方法而不为所述可变参数传递任何参数,这与传递空数组相同。换句话说,有:
class Foo(val key: String, vararg params: String)
我们已经让您像这样调用主构造函数了:
val foo = Foo("key")
如果你想在没有给出参数时使用非空数组,那么你可以指定一个默认参数:
class Foo(
val key: String,
vararg params: String = arrayOf("default", "params")
)