जब मैं NullPointerException से बचने के लिए कुछ डेटा पदानुक्रम से मान प्राप्त कर रहा हूं, तो कई बार मैं अपने आप को शून्य जांच पाता हूं, जो मुझे त्रुटियों और बहुत अधिक बॉयलरप्लेट की आवश्यकता के कारण लगता है।
मैंने एक बहुत ही सरल दिनचर्या लिखी है जो मुझे किसी वस्तु को लाते समय अशक्त जाँच को छोड़ देती है ...
public final class NoNPE {
public static <T> T get(NoNPEInterface<T> in) {
try {
return in.get();
} catch (NullPointerException e) {
return null;
}
}
public interface NoNPEInterface<T> {
T get();
}
}
मैं इसे इस तरह से उपयोग करता हूं ...
Room room = NoNPE.get(() -> country.getTown().getHouses().get(0).getLivingRoom());
उपरोक्त के परिणामस्वरूप मुझे सभी मूल स्तरों की जांच करने के लिए बिना एक कक्ष ऑब्जेक्ट या नल मिल रहा है।
आप ऊपर वाले से क्या समझते हैं? क्या मैं एक समस्याग्रस्त पैटर्न बना रहा हूँ? क्या आपकी राय में ऐसा करने का कोई बेहतर तरीका है?
Option
(या Maybe
) मोनद :) को फिर से खोज लिया है :)
java.util.Optional
लापता डेटा का प्रतिनिधित्व करने के लिए नल के बजाय अपने आवेदन को नया स्वरूप देने पर विचार करें ? यह आपके द्वारा वर्णित केस और उन मामलों के लिए उपयोगी उपयोगिताओं को प्रदान करता है, जहां आप चेन के अंत में विफलता की स्थिति में लौटने के बजाय डिफ़ॉल्ट डेटा के साथ ले जाना चाहते हैं ..