मैं दो दिए गए ऑब्जेक्ट्स की तुलना करना चाहता हूं जो रनटाइम पर शून्य हो सकते हैं। मेरे उदाहरण में:मैं लैम्ब्डा तुलनित्रों में NullPointerExceptions से कैसे बचूं?
@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));
}
अभिकथन आईडी से ठीक काम करता है, प्रकार नहीं है द्वारा a1.getType()
रिक्त है के रूप में। इससे बचने का कोई रास्ता है क्या? मैंने Comparator.nullsLast(...)
की कोशिश की, लेकिन इसका कोई मतलब नहीं है क्योंकि मैं यहां तत्वों को सॉर्ट नहीं कर रहा हूं।
मेरे पास बहुत सारे दावे हैं, इसलिए मैं "एक-लाइनर" पसंद करूंगा। मैं लैम्ब्डा अभिव्यक्तियों के लिए नया हूँ।
के बाद से मौजूद है क्यों आप 'equals' विधि का उपयोग करें चाहते है? – ByeBye
मैं _Agent_ के कार्यान्वयन को बदलने में सक्षम नहीं हूं और कोई हैशकोड/बराबर नहीं है। – JaneDoe
'nullsLast' के साथ क्या गलत है? – immibis