gpt4 book ai didi

java - kotlin 结构相等性检查父类(super class)型吗?

转载 作者:行者123 更新时间:2023-11-30 06:27:16 25 4
gpt4 key购买 nike

我稍微阅读了我的主题标题,我只是想确保我正确理解这一点。看起来答案是我们仍然需要重写类上的 equals 来定义结构相等检查是什么?换句话说,如果我们想要检查 customer1 == customer2 那么我们首先必须通过实现 equals 来定义 Customer 的结构相等性,此时 Kotlin 将通过 == 运算符使用我们的实现?

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

最佳答案

So in other words if we want to check the customer1 == customer2 then we first have to define what structural equality is for Customer by implementing equals, and at that point Kotlin will use our implementation by means of the == operator?

是的。如果Customer是一个数据类,那么您会自动获得equals的实现,否则您需要显式定义它。

So in this case if Customer inherits from Person and we also want perform a structural equality check using properties from Person then we would implement that in the equals(Object object) method?

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

我要补充一点,Kotlin 对“结构平等”一词的使用并不常见。它通常保留用于通过比较所有(相关)字段是否相等来检查相等性的情况,例如在数据类中,而不是“无论equals发生什么”。

关于java - kotlin 结构相等性检查父类(super class)型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46918311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com