Zijn twee objecten altijd gelijk wanneer hun methode CompareTo () nul retourneert?
Zijn twee objecten altijd gelijk wanneer hun methode CompareTo () nul retourneert?

Video: Zijn twee objecten altijd gelijk wanneer hun methode CompareTo () nul retourneert?

Video: Zijn twee objecten altijd gelijk wanneer hun methode CompareTo () nul retourneert?
Video: De complete React Query-cursus in een uur | TanStack Query v4 voor beginners 2024, December
Anonim

Het is aanbevolen dat vergelijk met enkel en alleen geeft terug 0, als een oproep naar gelijk aan Aan dezelfde objecten zou opbrengst waar: vergelijk met (e2) == 0 heeft hetzelfde booleaanse waarde als e1. gelijk aan (e2) voor elke e1 en e2 van klasse C. Merk op dat null is geen instantie van een klasse, en e.

Is het verder mogelijk dat equals () false retourneren, zelfs als de inhoud van twee objecten hetzelfde is?

4 antwoorden. In java de methode public boolean gelijk aan ( Object obj) is geërfd van de Object . Echter, de implementatie van de methode zoals gedefinieerd in de Object klasse is dat de gelijk aan methode zal terug als en alleen indien de twee objecten vergeleken worden zijn de dezelfde voorbeeld.

Vervolgens is de vraag: waarom zou CompareTo () consistent moeten zijn met de methode equals () in Java? Dit is zo omdat de kaartinterface is gedefinieerd in termen van de gelijk aan bewerking, maar een kaart voert alle belangrijke vergelijkingen uit met behulp van zijn vergelijk met (of vergelijk) methode , dus twee sleutels die worden geacht Gelijk door deze methode zijn, vanuit het standpunt van de gesorteerde kaart, Gelijk.

Met dit in het achterhoofd, wat is het verschil tussen == is gelijk aan () en vergelijk met () methode?

vergelijk met : vergelijkt twee strings lexicografisch. gelijk aan : vergelijkt deze tekenreeks met het opgegeven object. vergelijk met vergelijkt twee tekenreeksen op basis van hun tekens (met dezelfde index) en retourneert dienovereenkomstig een geheel getal (positief of negatief). gelijk aan() controleert of twee objecten hetzelfde zijn of niet en retourneert een boolean.

Kunnen we de methode CompareTo overschrijven?

Vergelijken met methode negeren Het zou een negatief geheel getal moeten retourneren (meestal -1), als het huidige activerende object kleiner is dan de doorgegeven een , en positief geheel getal (meestal +1) indien groter dan, en 0 indien gelijk. vergelijk met methode: zou een uitzondering moeten genereren als het doorgegeven object een incompatibel type of null heeft.

Aanbevolen: