簡體   English   中英

為什么員工的兩個對象不相等?

[英]Why two objects of employee are not equal?

我創建了一個名為name和employeeNo的Employee類。 我重寫等於和hashcode方法。

@Override
public boolean equals(Object obj) {
       final Employee other = (Employee) obj;

 if (this.employeeNo == other.employeeNo && this.name.equals(other.name)) {
                return true;
            }

            return false;
    }

@Override
public int hashCode() {
    int hash = 3;
    hash = 53 * hash + (this.name != null ? this.name.hashCode() : 0);
    hash = 53 * hash + this.employeeNo;
    return hash;
}

我的考試課

Employee p = new Employee();
        p.setName("v");
        p.setEmployeeNo(1);

        Employee p1 = new Employee();
        p.setName("v");
        p.setEmployeeNo(1);

        System.out.println(p==p1); // Print false . why?
System.out.println(p==p1);

不會隱式調用equals( 。它比較此處的引用不同。使用:

System.out.println(p.equals(p1));

代替。

也:

Employee p1 = new Employee();
p.setName("v");
p.setEmployeeNo(1);

使用p ,其中應使用p1

錯誤可能在此行中:

if (this.employeeNo == other.employeeNo && this.name.equals(other.name)) {
    return true;
}

僅當展位employeeNr相同時,此條件才true 如果employeeNrInteger類型,而不是int類型。

如果為false,則因為equals()不被調用。

a == b將檢查i是否對象相同

e.equals(b)將調用equals()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM