Person里有三个属性,firstname,lastname,age,如何设计让firstname和lastname相等了则这个对象相等了.
这个是一道面试题目,我的回答是:
[code="java"]
class Person{
String firstname;
String lastname;
int age;
@override
public boolean equals(Object obj){
Person p=(Person)obj;
//以下应该有一些空值的判断,大家别挑剔,
if(p.getFirstname.equals(this.name)&&p.getLastname(this.lastname)){
return true;
}
else return false;
}
//get set方法省略........
}
[/code]
这样回答是否对?因为笔试我没有看到......
在写上equals方法的同时还需写上
@Override
public int hashCode() {
return getFirstName().hashCode()+getLastName().hashCode();
}
才能真正实现两个Person真正实现firstname和lastname相等了则这个对象相等了
[code="java"]if(obj instanceof Person) {
Person p = (Person)obj;
}[/code]
不然调用person.equals(other);传入一个其它对象就会报类型转化异常了
重写equals(Object)须重写hashCode()。