Objektvergleich mit equals

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
hallo ich habe da mal eine frage zum Vergleich von zwei Objeten mit der equals Methode in JAVA:
folgende equals Methode kann ich mir in Eclipse generieren lassen:

public final boolean equals(final Object o) {
if (this == o)
return true;
if (o == null)
return false;
if (!(o instanceof Vehicle))
return false;
final Vehicle other = (Vehicle) o;
if (carRental == null) {
if (other.carRental != null)
return false;
} else if (!carRental.equals(other.carRental))
return false;
if (Double.doubleToLongBits(payload) != Double.doubleToLongBits(other.payload))
return false;
if (Double.doubleToLongBits(weight) != Double.doubleToLongBits(other.weight))
return false;
return true;

}

oder so was (auch von eclipse generiert):
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null)
return false;
if (!(o instanceof Customer))
return false;
final Customer other = (Customer) o;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}

Nun meine Frage ist das shöner Programmierstil.dass alles mit if Verschachtelungen zu machen,oder sollte man eher einen booleachen Ausdruck zurück geben,so in etwa:

return (other.getWeight() == this.getWeight() && other.getPayload() == this.getPayload() && ((this.getCarRental() != null &&
other.getCarRental() != null && other.getCarRental().equals(this.carRental)) || (this.getCarRental() == null && other.getCarRental() == null)));

das problem bei solchen equals Vergleichen kann das schon sehr unübersichtlich werden.Wie sieht es denn mit dem Performance gewinn aus??

Ich würde die Frage nicht stellen,ich finde ersteres besser (if Verschachtelunegn)..zumindest wenn der booleache Ausdruck sehr lang ist (>=3 vergeliche).Aber vom Dozenten/Übungsabnehmer hört man immer wieder,boolesche ausdrücke zurückgeben,wo möglich? Ist das hier so ein fall,was meint ihr? Oder ist der von Eclipse generierte Code in ordnung.

lieben Gruß
und ich danke euch
 

Morgyr

Aktives Mitglied
Ich bin mir jetzt nicht ganz sicher, ob ich die Frage richtig verstanden, aber ich gehe jetzt mal davon aus, dass ich es habe.

equals ist eine Methode. Wenn du dir in eclipse solch einen Code generieren lässt, bedeutet das, dass du dir die Methoden anzeigen lässt. Das was du aber letztlich in deinem Code benutzt, ist lediglich das equals. Was zum Beispiel bei actionPerformed(ActionEvent ae), sprich dem ActionListener für Buttons, ist folgendes

Code:
if(ae.getSource().equals(buttonBeispiel){ 
System.out.println("irgendein Code");
}
 

byte

Top Contributor
Riesige If-Verschachtelungen sind grundsätzlich nicht so der Bringer. Aber riesige Boolsche Ausdrücke sind noch viel grausamer. Ich würde auf jeden Fall auch Ifs bevorzugen. In diesem Fall sowieso, denn der Code wird generiert und funktioniert bestens. Kein Grund sich über den Codestil Gedanken zu machen.

@Morgyr: ??? ???:L
 

Morgyr

Aktives Mitglied
Was ich meine: Er kann doch einfach .equals(Object) benutzen? Aber ich glaube ich habe die Frage nicht verstanden.
 
G

Guest

Gast
payload und weight darfst Du nicht einfach so mit == vergleichen, da es in der Menge der Gleitkommazahlen auch Werte gibt, die nicht gleich mit sich selbst sind. Daher generiert Eclipse "Double.doubleToLongBits(payload) == ...".

Fred
 
G

Guest

Gast
Danke euch...
Habs mit if Verschachtelung gemacht.....eclipse generiert ja schon alles,aber man muss sich ja mal über eine schönne Programmierstil Gedanken machen,und warum was so ist,wie es ist.

danke für eure Tips


Gruß
sky
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
mihe7 equals und instanceOf pattern matching Allgemeine Java-Themen 9
P Strings: equals vs == Allgemeine Java-Themen 47
F Methoden hashCode() & equals() Allgemeine Java-Themen 13
J Equals Mock Objekte Allgemeine Java-Themen 5
J Mockito - Objekte miteinander vergleichen (equals) Allgemeine Java-Themen 6
J Probleme mit CodeCoverage und Lombok Equals Allgemeine Java-Themen 1
S equals-Methode bestimmer Klassen abfangen Allgemeine Java-Themen 2
T Zwei Wortendungen vergleichen ohne .equals Allgemeine Java-Themen 10
C Object.equals() liefert falschen Wert? Allgemeine Java-Themen 14
T Collections TreeSet.contains ruft nicht .equals? Allgemeine Java-Themen 4
H Problem mit der .equals()-Methode Allgemeine Java-Themen 2
T Compiler-Fehler not equals Allgemeine Java-Themen 22
I HashMap key wird nicht erkannt trotz überschriebener equals/hashCode Methode Allgemeine Java-Themen 6
V ArrayList vergleichen mit .equals? Allgemeine Java-Themen 13
A mit .equals Array befüllen schlägt teilweise fehl Allgemeine Java-Themen 3
G Probleme mit equals Allgemeine Java-Themen 3
R Merkwürdiges Verhalten der equals Method Allgemeine Java-Themen 4
tuttle64 equals() und == Allgemeine Java-Themen 4
B Probleme mit eigener equals Methode Allgemeine Java-Themen 18
H double dispatch und equals(Object) Allgemeine Java-Themen 6
S equals - Identität ändern bei Vererbung? Allgemeine Java-Themen 5
fastjack jUnit und Test von equals, hashCode, toString Allgemeine Java-Themen 11
K Collection.contains()/retainAll() mit Referenzgleichheit statt equals()? Allgemeine Java-Themen 2
J Best Practice für implementierung von equals(...) Allgemeine Java-Themen 7
M equals & compareTo Allgemeine Java-Themen 15
M Warum Strings mit equals vergleichen... Allgemeine Java-Themen 6
T Wie intelligent ist dieses überschriebene .equals() ? Allgemeine Java-Themen 13
vogella Überschreiben von equals und hashcode für Collection Allgemeine Java-Themen 7
M String#equals(), Probleme mit großen Strings? Allgemeine Java-Themen 4
André Uhres equals überschreiben Allgemeine Java-Themen 31
F Problem: mehrere Interfaces definieren equals() neu Allgemeine Java-Themen 24
A equals() macht nicht, was es soll Allgemeine Java-Themen 4
B Equals Methode überschreiben mit Array Allgemeine Java-Themen 2
M equals() != compareTo() ? Allgemeine Java-Themen 3
M String mit equals() vergleichen - Frage Allgemeine Java-Themen 3
S equals überladen Allgemeine Java-Themen 15
S Mal was allgemeines zu equals() Allgemeine Java-Themen 12
J Arrays vergleichen mit equals Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben