Je cours en Java et très souvent quand la méthode equals
est définie dans les nouvelles classes son argument est Object
plutôt que le type réel de la classe. Exemple de code:Pourquoi écririons-nous la méthode equals en Java avec Object comme argument?
public class TestClass {
String label, value;
public TestClass(String label, String value) {
this.label = label;
this.value = value;
}
public boolean equals(Object o) {
TestClass t = (TestClass) o;
return this.value.equalsIgnoreCase(t.value);
}
}
Pourquoi est-ce une bonne pratique? Peut-être que si je veux utiliser le polymorphisme plus tard, cela serait utile. Est-ce une bonne pratique d'utiliser Object
comme argument même si je ne pense pas actuellement que j'aurai besoin de polymorphisme mais je devrais quand même le prendre en compte au cas où?
Aussi ce qui me dérange est que nous ne vérifions jamais si l'objet sera réellement de type TestClass
. Pourquoi devrions-nous avoir un chèque instanceof
?