hallo liebe leute,
bin grad über einen fall gestolpert, wo meine schlampige implementierung von equals zu schwer debugbaren nullpointern geführt hat. da ich bisher nicht nennenswert viel mit hash containern gearbeitet hab, war es oft einfach nicht nötig equals zu implementieren, deshalb bin ich grad etwas verunsichert. folgendes:
meine jetzige equals implementierung funktioniert nun zwar wunderbar und nullpointer frei, allerdings habe ich irgendwie ein ungutes bauchgefühl dabei, einfach was code eleganz angeht. mich interessiert nun, was ihr von der equals implementierung haltet - ist das tatsächlich sauber so? weiss jemand, wie man es noch schöner machen kann bzw. kennt gängige best practice? der punkt ist, dass auf diese weise bei größeren klassen die equals methode unglaublich lang und unübersichtlich wird. irgendwie hab ich da grad ein brett vorm kopf.
jeder hinweis wäre toll, danke
hier der code
bin grad über einen fall gestolpert, wo meine schlampige implementierung von equals zu schwer debugbaren nullpointern geführt hat. da ich bisher nicht nennenswert viel mit hash containern gearbeitet hab, war es oft einfach nicht nötig equals zu implementieren, deshalb bin ich grad etwas verunsichert. folgendes:
meine jetzige equals implementierung funktioniert nun zwar wunderbar und nullpointer frei, allerdings habe ich irgendwie ein ungutes bauchgefühl dabei, einfach was code eleganz angeht. mich interessiert nun, was ihr von der equals implementierung haltet - ist das tatsächlich sauber so? weiss jemand, wie man es noch schöner machen kann bzw. kennt gängige best practice? der punkt ist, dass auf diese weise bei größeren klassen die equals methode unglaublich lang und unübersichtlich wird. irgendwie hab ich da grad ein brett vorm kopf.
jeder hinweis wäre toll, danke
hier der code
Java:
@Override
public boolean equals(Object o){
if(!(o instanceof MyClass))
return false;
MyClass data = (MyClass)o;
if(data.a == null && a != null)
return false;
else {
if(!data.a.equals(a))
return false;
}
if(data.b == null && b != null)
return false;
else {
if(!data.b.equals(b))
return false;
}
// Und so weiter für jedes relevante feld....
return true;
}