Junior — Middle
È possibile utilizzare il metodo equals senza sovrascriverlo preventivamente nella classe?
sobes.tech AI
Risposta dell'AI
Sì, il metodo equals può essere utilizzato senza essere ridefinito, poiché ereditato dalla classe Object. Tuttavia, in questo caso, il comportamento del metodo sarà standard: confronto delle referenze degli oggetti (cioè, verificare se due variabili puntano allo stesso oggetto in memoria).
Se si desidera confrontare gli oggetti per contenuto (ad esempio, per i valori dei campi), allora il metodo equals deve essere ridefinito nella classe. Senza ridefinizione, il confronto non funzionerà come previsto per oggetti logicamente uguali.
Esempio:
class Person {
String name;
Person(String name) { this.name = name; }
}
Person p1 = new Person("Alice");
Person p2 = new Person("Alice");
System.out.println(p1.equals(p2)); // false, se `equals` non è ridefinito
Per far funzionare il confronto per contenuto, è necessario ridefinire equals e hashCode.