Was ist der kompakteste Code, um drei Objekte für (semantische) Gleichheit mit Java zu vergleichen? Ich habe eine Geschäftsregel, dass die Objekte eindeutig sein müssen, dh A ist anders als B, A ist anders als C und B ist anders als C.Die kompakteste Möglichkeit, drei Objekte mithilfe von Java auf Gleichheit zu prüfen.
Angenommen, dass die Objekte alle der gleichen Klasse sind und ordnungsgemäß überschrieben haben equals
und hashCode
Methoden. Eine leichte Falte ist, dass Objekt Cnull
— sein könnte, wenn dies der Fall ist, dann A und B zueinander unterschiedlich zu sein haben.
Ich habe ein wenig Code, aber es ist ein bisschen handwerklich für meinen Geschmack.
Sie brauchen den letzten Ausdruck nicht; Wenn A gleich B ist und B gleich C ist, dann muss A gleich C sein (oder die Implementierung von equals() ist fehlerhaft). –
@Aaron: Es ist nicht "und", es ist "oder". Wenn ein Begriff falsch ist, kann der andere Ausdruck immer noch wahr sein: 'Auto.equals (Fahrrad) oder Bike.equals (Auto) oder Auto.equals (Auto)'. Die ersten beiden sind falsch, das dritte ist wahr: es wird benötigt ;-) – Abel
Was ist, wenn A! = B und C == null? Meine Lektüre der Frage ist, dass diese einzigartig sind, aber Ihre erste Antwort testet C zuerst und gibt "nicht einzigartig" zurück. – Nefrubyr