在这段代码中,我接受了两个对象,因为我想将三个不同的对象相互比较(1和2,1和3,2和3),由于某种原因它不会识别对象2和3是相等的
public boolean equals(Person num1, Person num2) {
if ((this.name.equals(num1.name))&&(this.address.equals(num1.address))&&
(this.age==num1.age)&&(this.phoneNumber==num1.phoneNumber))
return true;
if ((this.name.equals(num2.name))&&(this.address.equals(num2.address))&&
(this.age==num2.age)&&(this.phoneNumber==num2.phoneNumber))
return true;
else
return false;
}
下面的演示类
public class PersonDemo {
public static void main(String[] args) {
//num1, num2, and num3 represent three people
Person num1, num2, num3;
num1=new Person("Allison", "6600 Crescent Ave", 32, 4231421);
num2=new Person("George", "5251 Lakewood St", 24, 4489216);
num3=new Person("George", "5251 Lakewood St", 24, 4489216);
//name, address, age and phoneNumber are the parameters used to
//describe each object (num1, num2, and num3)
System.out.println("\nInformation of person 1: ");
System.out.println(num1);
System.out.println("\nInformation of person 2: ");
System.out.println(num2);
System.out.println("\nInformation of person 3: ");
System.out.println(num3);
if (num1.equals(num2))
System.out.println("\nPerson 1 and person 2 are identical.");
else
System.out.println("\nPerson 1 and person 2 are not identical.");
if (num1.equals(num3))
System.out.println("\nPerson 1 and person 3 are identical.");
else
System.out.println("\nPerson 1 and person 3 are not identical.");
if (num2.equals(num3))
System.out.println("\nPerson 2 and person 3 are identical.");
else
System.out.println("\nPerson 2 and person 3 are not identical.");
}
} 输出: --------------------配置:--------------------
人1的信息: 姓名:艾莉森 地址:新月大道6600号 年龄:32岁 电话号码:4231421
人2的信息: 姓名:乔治 地址:5251 Lakewood St. 年龄:24岁 电话号码:4489216
人3的信息: 姓名:乔治 地址:5251 Lakewood St. 年龄:24岁 电话号码:4489216
第1人和第2人不相同。
第1人和第3人不相同。
第2人和第3人不相同。
流程已完成。
答案 0 :(得分:1)
好像你想要覆盖Object.equals
方法。
public boolean equals(Person num1, Person num2) {
// ...
}
但是你的签名是不同的。它应该是:
@Override
public boolean equals(Object o) {
if(!(o instanceof Person))
return false;
Person num1 = (Person) o;
if ((this.name.equals(num1.name))&&(this.address.equals(num1.address))&&
(this.age==num1.age)&&(this.phoneNumber==num1.phoneNumber))
return true;
}
Object.equals
,则必须只有一个类型为Object
的参数。@Override
确保您的方法真正覆盖某些内容。