Ich möchte zwei gegebene Objekte vergleichen, die zur Laufzeit null sein könnten. In meinem Beispiel:Wie vermeide ich NullPointerExceptions in Lambda-Komparatoren?
@Test
public void shouldCompareAgents() {
Agent a1 = new Agent();
a1.setId("4711");
a1.setType(null);
Agent a2 = new Agent();
a2.setId(a1.getId());
a2.setType(a1.getType());
assertEquals("Agent.getId", 0,
Comparator.comparing(Agent::getId).compare(a1, a2));
assertEquals("Agent.getType", 0,
Comparator.comparing(Agent::getType).compare(a1, a2));
}
Die Behauptung von id funktioniert gut, nach Typ nicht der Fall ist, wie a1.getType()
null ist. Gibt es eine Möglichkeit, dies zu vermeiden? Ich habe versucht Comparator.nullsLast(...)
, aber das macht keinen Sinn, da ich hier Elemente nicht sortiere.
Ich habe viele Behauptungen zu tun, also würde ich "Ein-Liner" bevorzugen. Ich bin neu für Lambda-Ausdrücke.
Warum Sie nicht wollen, 'equals' Methode verwenden? – ByeBye
Ich bin nicht in der Lage, die Implementierung von _Agent_ zu ändern und es gibt keinen hashCode/equals. – JaneDoe
Was ist los mit 'nullsLast'? – immibis