如果我尝试通过
override operator fun equals
覆盖 equals 函数和 == 运算符,我会收到“冲突重载”错误。
这是否意味着 == 和 .equals() 是同一件事?如果不是,为什么我不能覆盖两者?
它们不是完全相同的东西,但是,是的,
==
是根据equals
实现的:
https://kotlinlang.org/docs/equality.html#structural-equality
结构相等验证两个对象是否具有相同的内容或 结构。结构相等性通过
操作及其 否定对应物==
。按照惯例,像!=
这样的表达式是 翻译为:a == b
a?.equals(b) ?: (b === null)
另请参阅 https://kotlinlang.org/docs/operator-overloading.html#equality-and-inequality-operators。