gpt4 book ai didi

java - 为什么我们要在 Java 中以 Object 作为参数编写 equals 方法?

转载 作者:行者123 更新时间:2023-12-02 12:16:42 24 4
gpt4 key购买 nike

我正在学习 Java 类(class),并且经常在 equals 时进行方法在新类中定义,其参数为 Object而不是类的实际类型。代码示例:

public class TestClass {
String label, value;
public TestClass(String label, String value) {
this.label = label;
this.value = value;
}

public boolean equals(Object o) {
TestClass t = (TestClass) o;
return this.value.equalsIgnoreCase(t.value);
}
}

为什么这是一个好的做法?也许如果我以后想使用多态性,这会很有帮助。使用 Object 是一个好习惯吗?作为参数,即使我目前认为我不需要多态性,但我仍然应该考虑它以防万一?

另外令我困扰的是,我们从不检查该对象是否实际上是 TestClass 类型。 。为什么我们应该有一个 instanceof检查?

最佳答案

你应该自己进行类型检查,正如你所说,仅仅强制转换并不安全,因为它可能是错误的类型,然后它会抛出 ClassCastException

使用对象的原因是你可能有不同的类可以相等(尽管这种情况很少见),如果你不重写 equals 的对象形式那么当你使用集合时你会遇到问题,因为事情会赢不应该相等,因为集合将使用对象形式。

理论上可能存在一个通用的 equals 接口(interface),但 equals 方法早于遗传学,而且能够用任何其他对象检查任何对象简化了大量代码。

关于java - 为什么我们要在 Java 中以 Object 作为参数编写 equals 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46117103/

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