data
类中报告具有 Array
类型的属性,而不覆盖 equals()
或 hashCode()
。
数组参数被采用引用等于进行了比较,这可能是一种意外行为。
在这种情况下,强烈建议覆盖 equals()
和 hashCode()
。
示例:
数据类文本 (val 行: 数组<String>)
建议通过快速修复会生成缺失的 equals()
和 hashCode()
实现:
data class Text(val lines: Array<String>) {
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false
other as Text
if (!lines.contentEquals(other.lines)) return false
return true
}
override fun hashCode(): Int {
return lines.contentHashCode()
}
}