【问题标题】:Is spotbugs compatible with Kotlin?斑点虫与 Kotlin 兼容吗?
【发布时间】:2018-05-21 15:15:17
【问题描述】:

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

[错误] 在 CSVRecord.kt UPM_UNCALLED_PRIVATE_METHOD 中永远不会调用私有方法 com.example.CSVRecord.component1() [com.example.CSVRecord]

关于类,例如:

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

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

我不太清楚component1 来自哪里!

【问题讨论】:

    标签: kotlin spotbugs


    【解决方案1】:

    根据Data Classes 文档:

    编译器会自动从所有 在主构造函数中声明的属性:

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

    这是数据类的特性之一。自动生成的componentN 函数允许您在此类类上使用Destructuring Declarations

    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(...)
    

    【讨论】:

      猜你喜欢
      • 2020-05-26
      • 2015-08-09
      • 2018-08-27
      • 2011-12-31
      • 2020-03-19
      • 2018-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多