天天看點

java中equals方法的參數_java – 為什麼新類的equals()方法的參數應該是Object類型?...

我正在重讀Stuart Reges的“建構

Java程式”,并注意到一些我不太了解的内容.它關于在任何新類中重載equals()方法.讓我們說我們定義一個類:

public Point{

private int x;

private int y;

public Point(int x, int y){

this.x = x;

this.y = y;

}

public getX(){

return this.x;

}

public getY(){

return this.y;

}

}

本書建議,每當我們定義一個新類時,我們為新類定義的equals()方法應該這樣寫:

public boolean equals(Object o) {

if (o instanceof Point) {

Point other = (Point) o;

return x == other.x && y == other.y;

} else {

return false;

}

}

為什麼equals方法應該接受泛型類型“Object”而不是“Point”類型的對象?該書說如果equals方法頭與通用Object類的equals方法頭不比對,它将不會被重載(并且我得到它不會被重載,否則).然而,這有點不直覺,因為它們實際上相等的唯一時間是同一類型……

當我将一個String對象作為參數傳遞給我的equals()方法時,該方法接受Point類型的參數而不是String,它正确地傳回false.每當我們傳遞不同類型時,通用的equals()方法(比較記憶體位址)是否适合賬單?