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
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