创建一个方法,如果名字和姓氏相同,则认为两个对象相等。
因此,在这个类中,我需要创建一个Equals方法来检查两个对象是否具有相同的名称。我试图在类中创建两个对象,只是与“初始化”的构造,但它创建的对象创建一个方法,如果名字和姓氏相同,则认为两个对象相等。
给了一个错误Person.Java
public class Person
{
String firstName = "";
String lastName = "";
String age = "";
public Person (String firstName, String lastName, String age){
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
public String getFirstName(){
return firstName;
}
public String getLastName(){
return lastName;
}
public String getAge(){
return age;
}
public void setFirstName(String firstName){
this.firstName = firstName;
}
public void setLastName(String lastName){
this.lastName = lastName;
}
public void setAge(String age){
this.age = age;
}
public String toString(){
return firstName + " " + lastName + ", " + age + " years old";
}
}
这里是我的司机,所以基本上我需要一种方法,它们都具有相同的名称并打印出一条消息,说明它们具有相同的名称。我的实验室说它必须在班级而不是司机,这就是为什么我迷路了,考虑到我可以很容易地在司机内做一个if/else语句。
public class PersonDriver
{
public static void main(String[] args)
{
Person p1 = new Person("John","Doe", "42");
Person p2 = new Person("John","Doe", "43");
System.out.println(p1);
System.out.println(p2);
}
}
在Person类中,您必须重写java中每个对象所拥有的equals()方法。作为参数,此方法接受同一类的另一个对象,并将其字段与初始对象的字段进行比较。如果每个对象的字段是相等的,那么它将返回true,而false则相反。这是代码是如何寻找:
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
if (firstName != null ? !firstName.equals(person.firstName) : person.firstName != null) return false;
if (lastName != null ? !lastName.equals(person.lastName) : person.lastName != null) return false;
return age != null ? age.equals(person.age) : person.age == null;
}
UPDATE:为toastedDeli说,方法初始化前添加@Override:
@Override
public boolean equals(Object o) {
...
}
也可以考虑在此方法声明之上添加@Override。 https://stackoverflow.com/questions/94361/when-do-you-use-javas-override-annotation-and-why – toastedDeli
如果你重写equals(),你应该重写hashCode()。 – FredK
所以,你需要能够做这样的事? 'if(p1.equals(p2)){// do something}' – toastedDeli