Tôi muốn so sánh hai đối tượng đã cho có thể là null khi chạy. Trong ví dụ của tôi:Làm thế nào để tránh NullPointerExceptions trong bộ so sánh lambda?
@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));
}
Xác nhận theo id hoạt động tốt, theo loại không phải là a1.getType()
là null. Có cách nào để tránh điều này không? Tôi đã thử Comparator.nullsLast(...)
, nhưng điều đó không có ý nghĩa vì tôi không sắp xếp các yếu tố ở đây.
Tôi có rất nhiều xác nhận để làm, vì vậy tôi muốn "một lót". Tôi mới với các biểu thức lambda.
Tại sao bạn không muốn sử dụng 'phương pháp equals'? – ByeBye
Tôi không thể thay đổi triển khai _Agent_ và không có hashCode/equals. – JaneDoe
Điều gì sai với 'nullsLast'? – immibis