包含函数不调用equals方法来比较对象

时间:2017-03-31 10:16:16

标签: java hibernate set equals gethashcode

我正在使用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方法。我哪里出错了?

0 个答案:

没有答案