我读了一些关于主题的文章,我只是想确保自己理解正确。似乎答案是,我们仍然需要重写类中的equals来定义什么是结构相等性检查?所以换句话说,如果我们要检查customer1 == customer2,那么我们首先必须通过实现equals来定义Customer的结构相等性,然后Kotlin将通过==运算符使用我们的实现?

因此,在这种情况下,如果Customer继承自Person,并且我们还想使用Person的属性执行结构相等性检查,那么我们可以在equals(Object object)方法中实现它吗?

最佳答案



是。如果Customerdata class,那么您将自动获得equals的实现,否则需要显式定义它。



再次,是的(使用Any?而不是Object),就像在Java中一样,而且...很复杂。有关更多信息,请参见https://stackoverflow.com/a/7798706/9204https://stackoverflow.com/a/13163898/9204以及从它们链接的文章。

我还要补充一点, Kotlin 对“结构平等”一词的使用不是正常的。它通常用于通过比较所有(相关)字段的相等性来检查相等性的情况,例如data class中,而不是“无论equals碰巧做什么”。

10-04 18:56