Kotlin获取继承类的默认hashCode实现

1wnzp6jl  于 2023-05-23  发布在  Kotlin
关注(0)|答案(1)|浏览(218)

在重写之前,Kotlin/JVM中的每个类都有默认的equals/hashCode实现。Equals是用===检查引用是否相等,但hashCode是另外一回事(我不知道它是什么)。
我想知道一旦被覆盖,我是否可以恢复hashCode的默认实现,考虑这个例子:

open class A {
    override fun hashCode(): Int = 1
}

class B : A() {
    override fun hashCode(): Int {
        // how can I get the default implementation here?..
    }
}
2w2cym1i

2w2cym1i1#

你不能访问super.super方法,但JVM实际上提供了一个方法来获取原始的哈希码值:

class B : A() {
    override fun hashCode(): Int = System.identityHashCode(this)
}

相关问题