1

在 Kolin 项目上运行 spotbugs 时,出现以下错误:

[错误] 私有方法 com.example.CSVRecord.component1() 从未被调用 [com.example.CSVRecord] 在 CSVRecord.kt UPM_UNCALLED_PRIVATE_METHOD

在诸如以下的课程中:

data class CSVRecord(private val columns: SortedSet<CSVColumn>) : Iterable<String> {

    override fun iterator(): Iterator<String> {
        return columns.map { it.value }.iterator()
    }
}

我不是很清楚从哪里来component1

4

1 回答 1

2

根据数据类文档:

编译器自动从主构造函数中声明的所有属性派生以下成员:

  • equals()/hashCode() 对;
  • toString() 形式为“User(name=John, age=42)”;
  • componentN() 函数对应于其声明顺序的属性;
  • 复制()函数(见下文)。

这是数据类的特性之一。自动生成的componentN函数允许您在这种类型的类上使用解构声明:

data class Result(val result: Int, val status: Status)
fun function(...): Result {
    // computations

    return Result(result, status)
}

// Now, to use this function:
val (result, status) = function(...)
于 2018-05-21T16:50:20.263 回答