我正在使用SQL查询来获取Person对象。这个Person对象有一组兴趣,我也从SQL查询获得。
现在,当我尝试检查此Person对象中是否包含兴趣对象时,它不会调用equals方法来检查它。
以下是我的代码
class Interest {
private Person person ;
private Admin admin ;
//getter setters for Person and admin
public boolean equals(Object arg0) {
// TODO Auto-generated method stub
if (!(arg0 instanceof Interest)) {
return false;
}
if (this==arg0){
return true;
}
if(this.person.equals(((Interest)arg0).getPerson()) && this.admin.equals(((Interest)arg0).getAdmin()))
{
return true;
}
return false;
}
/* (non-Javadoc)
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode() {
// TODO Auto-generated method stub
int hc=0;
if(this.person !=null)
hc= hc + 19 * this.person.getName().length();
if(this.admin !=null)
hc= hc + 19 * this.admin.getName().length();
return hc;
}
public int compareTo(Object arg0) {
// TODO Auto-generated method stub
String objStr = ((Interest)arg0).person.getName().toUpperCase();
int value = this.person.getName().toUpperCase().compareTo(objStr);
return value;
}
}
现在在person类中,我的代码如下:
class Person {
private Set interest ;
//other fields
//getter and setters
public boolean isInterestExists(Interest interest){
return this.interest.contains(interest);
}
}
现在我从
执行此操作person.isInterestExists(interest);
它没有调用Interest类的equals方法。我哪里出错了?