今天编写了一个关于Java中equals重写的问题,自定义一个Person类中的equals方法。代码如下
import org.omg.CORBA.Object;
public class Person {
private String name;
private int age;
Person(String name,int age){
this.name = name;
this.age = age ;
}
public void speak(){
System.out.println(this.name+"..."+this.age);
}
public boolean equals(Object obj){
//判断名字和年龄是否相同,是Person的属性,必须向下转型
if (obj instanceof Person)
throw new ClassCastException("类型错误");
Person p =(Person) obj;
return this.age == p.age && this.name.equals(p.name);
}
public static void main(String[] args) {
Person p1 = new Person("小明",15);
Person p2 = new Person("小明",15);
System.out.println(p1.equals(p2));
}
}
功能很简单,定义一个Person中的比较函数。但是代码运行的结果为:false。
仔细查看代码,发现了代码之前增加了“import org.omg.CORBA.Object;”这是通过IDEA编写代码时自动补全的import。在加入import之后,Person中重写的方法equals就不再被调用了。