Mam pytanie dotyczące przesłonięcia metody equals
w Javie. W mojej książce, mam następujący przykład:Metoda rzutowania równa się
public class Dog{
private String name;
private int age;
public boolean equals(Object obj) {
if(!(obj instanceof Dog)) return false;
Dog other = (Dog) obj; ---> confused here
if(this.name.equals(other.name) && (this.age == other.age) {
return true;
}
else {
return false;
}
}
}
ja nie rozumiem, dlaczego, dlaczego mają do oddania odniesienie do odniesienia Dog
. Jeśli to odwołanie nie jest typu Dog
, zwracamy wartość false. Dlaczego wszystkie kłopoty z rzuceniem go?
Nie zapomnij o obj == null. I niezwiązane z twoim pytaniem, ale możesz po prostu zwrócić this.name.equals (other.name) && (this.age == other.age) – ssedano
Ponieważ to Equals akceptuje tylko jeden parametr i jest to nadpisanie klasy Dog, więc to jest równe oczekiwaniom obiektu typu Dog. jeśli przekażesz inny typ obiektu, to zawsze zwróci on fałsz, jest to część ekstremalnego programowania, która ma na celu uniknięcie wszelkich spodziewanych awarii środowiska wykonawczego. –
Byłoby łatwiej odpowiedzieć na to pytanie, gdybyś mógł zaproponować, w jaki sposób * chcesz * napisać kod bez obsady, pamiętając, że typem kompilacji 'obj' jest' Obiekt'. –