Kotlin のコレクションやシーケンスに対し、演算子形式 (a + b、a - b) または通常の呼び出し形式 (a.plus(b)、a.minus(b)) のいずれかで plus/minus を使用して java.nio.file.Path オブジェクトを追加または除去している呼び出しを報告します。
java.nio.file.Path は Iterable<Path> を実装しているため、このような呼び出しは要素 (この場合、Path の個々の要素) のコレクションを受け取る plus または minus 関数の予期しないオーバーロードに解決されます。 しかし、コードの意図は個々の要素ではなく、Path 自体を追加または除去することにあると思われます。
例:
// 演算子形式
val paths = listOf(path) + somePath
val paths2 = setOf(path) - somePath
// 通常の呼び出し形式
val paths = listOf(path).plus(somePath)
val paths2 = setOf(path).minus(somePath)
クイックフィックス:
plusElement/minusElement に変換します (元の意図に合ったセマンティクスに変更されます):
val paths = listOf(path).plusElement(somePath)
val paths2 = setOf(path).minusElement(somePath)
Path 引数をコレクションに変換して意図を明確にします:
plus の場合: 順序を保存するために引数を toList() で囲みます。minus の場合: 効率的に除去するために引数を toSet() で囲みます。
val paths = listOf(path).plus(somePath.toList())
val paths2 = setOf(path).minus(somePath.toSet())