我想重写equals方法,书上说一处代码用instanceof有问题,我想问一下,这样有什么问题,请给出详细描述或例子,谢谢!!!
public class Person {
private String id;
private String name;
public Person()
{
}
public Person(String id,String name)
{
this.id = id;
this.name = name;
}
@Override
public boolean equals(Object obj) {
if (null != obj && obj instanceof Person) (1处代码)
{
Person p = (Person)obj;
if (this.id.equals(p.id) && this.name.equals(p.name))
{
return true;
}
}
return false;
}
public static void main(String[] args) {
Person p1 = new Person("123","张三");
Person p2 = new Person("123","张三");
System.out.println(p1.equals(p2));
}
}
相关推荐
Java重写equals同时需要重写hashCode的代码说明,以及如何重写hashCode方法,此代码演示按照effective java书籍说明的重写思路。代码中演示了使用集合存储对象,并且对象作为key,需重写equals和hashCode.
总之,理解并正确重写 `equals()` 和 `hashCode()` 方法对于编写高质量的Java代码至关重要,这直接影响到对象比较的逻辑以及使用哈希表的数据结构的效率。通过遵循上述原则和最佳实践,我们可以确保对象的比较行为...
第一种情况:如果类中提供的 equals 方法无法满足需求,则需要重写 equals 方法。例如,在 String 类中,equals 方法用于比较两个字符串的内容是否相同,而不是比较它们的引用。 第二种情况:对于采用哈希算法的...
关于 Java 中重写 equals 方法的种种坑 Java 中的 equals 方法是一种用于比较对象是否相等的方法,它是 Object 类中的一个方法。然而,重写 equals 方法并不是一件简单的事情,因为它需要遵守一些约定,否则可能会...
在Java编程语言中,`equals()` 和 `hashCode()` 方法是Object类中的两个核心方法,所有类都默认继承自Object类。这两个方法在处理对象比较和集合操作时起着至关重要的作用。当我们创建自定义类并需要对对象进行精确...
Java 对象的toString和equals方法重写 在 Java 中,每个对象都继承自 Object 类,而 Object 类中定义了两个重要的方法:toString() 和 equals()。这两个方法都是非常重要的,它们分别用于对象的字符串表示和对象...
"Java重写equals及hashcode方法流程解析" Java中的equals和hashCode方法是两个非常重要的方法,它们都是Object类中的方法。在实际开发中,正确地重写这两个方法对于确保程序的正确性和性能至关重要。下面,我们将...
Java 中重写 equals() 方法的同时要重写 hashCode() 方法的重要性 在 Java 中,equals() 方法和 hashCode() 方法是两个紧密相关的方法,它们都是用于比较和标识对象的方法。equals() 方法用于比较两个对象的值是否...
#### 二、为什么需要重写equals方法? 1. **提高程序效率**:当两个对象具有相同的业务逻辑上的“身份”时,它们应该被认为是相等的。 2. **增强代码可读性**:重写后的`equals`方法可以根据实际需求来判断对象是否...
在Java编程语言中,"方法重写equals"和"多态"是两个核心概念,尤其对于面向对象的设计和实现至关重要。下面将详细解释这两个概念及其相互关系。 **方法重写equals()** 在Java中,`equals()`方法是Object类的一个...
java_equals用法,用来熟悉重写equals方法的
`equals()` 方法是 Java Object 类中的一个成员,它默认比较两个对象的引用是否相同,也就是判断它们是否指向内存中的同一个地址。然而,在很多情况下,我们希望比较的是两个对象的内容是否相等,这就需要重写 `...
计算机后端-Java-Java核心基础-第14章 面向对象06 14. 重写equals().avi
然而,当我们用自定义的`MyTest`类扩展`FieldPosition`并重写`equals`方法时,出现了不对称的问题。`fp.equals(fp1)`返回`true`,而`fp1.equals(fp)`返回`false`。 这个问题的原因在于`MyTest`类的`equals`方法只...
为什么重写equals方法,还必须要重写hashcode方法
例如,String类和许多其他类都重写了`equals()`,使得它能比较两个对象的内容。所以,对于字符串,`str1.equals(str2)`会比较它们的内容,如果内容相同,返回`true`。 在实际开发中,我们应该根据需要比较的内容...
当我们在自定义类中重写 `equals()` 方法时,通常也需要重写 `hashCode()` 方法,这是为了遵循一些重要的原则和保证数据结构如 `HashMap`、`HashSet` 的正确行为。 首先,`equals()` 方法用于比较两个对象是否相等...
在重写equals方法时,我们需要遵守Java规范中对equals方法的约束,包括自反性、对称性、传递性、一致性和null处理。 自反性:对于任何非空引用x,x.equals(x)返回true。 对称性:对于任何引用x、y,当且仅当y....
如果我们只重写了 `equals()` 来比较姓名和年龄,而没有重写 `hashCode()`,那么即使两个 `Person` 实例具有相同的姓名和年龄,它们在哈希表中的位置也可能不同,导致不必要的比较和潜在的性能问题。 总结来说,...
然而,在许多情况下,特别是对于自定义类或Java标准类库中的类(如`String`、`Integer`等),`equals`方法被重写来比较对象的实际内容。 ##### 示例: ```java String str1 = "hello"; String str2 = "hello"; ...