【发布时间】:2022-01-24 19:31:27
【问题描述】:
我想知道为什么 equal 方法 (==) 不能按预期工作。
有没有办法修复下面代码中的注释部分?
如您所见,p1 和 p2 不相等,既不是引用也不是值。那么为什么 p1 == p2 是真的呢?!
object Main {
@JvmStatic
fun main(args: Array<String>) {
val f1 = Foo(1)
Thread.sleep(3) // to set a different value in parent of f2
val f2 = Foo(1)
val p1 = (f1 as Parent)
val p2 = (f2 as Parent)
println(p1 == p2) // true
println(p1.b == p2.b) // false
}
}
data class Foo(val a: Int) : Parent("$a-${System.currentTimeMillis()}")
sealed class Parent(val b: String) {
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false
other as Parent
if (b != other.b) return false
return true
}
override fun hashCode(): Int {
return b.hashCode()
}
}
【问题讨论】:
标签: kotlin