स्कैला कंपाइलर में -Xcheck-null
है जो यह जांचने का प्रयास करता है कि रनटाइम में कोई संभावित शून्य सूचकता है या नहीं।मार्क विधि कॉल करें कि यह हमेशा नल परिणाम नहीं देता
यह मेरे लिए ठीक है, लेकिन मैं बहुत अधिक झूठे सकारात्मक मिलता है, अर्थात लगता है मुझे लकड़हारा को परिभाषित:
private final val LOGGER: Logger = LoggerFactory.getLogger(classOf[GenericRestImpl])
विधि getLogger
रिटर्न कभी नहीं null
। मैं इस ज्ञान को कंपाइलर को कैसे पास कर सकता हूं ताकि शिकायत न हो?
[WARNING] TestImpl.scala:31: warning: potential null pointer dereference: LOGGER.debug
[WARNING] LOGGER.debug("Using {} for sort", sortParam)
जब मैं नया उदाहरण बनाने मैं इसे NotNull
विशेषता के साथ चिह्नित कर सकते हैं:
return new Foo() with NotNull.
कि ठीक है, लेकिन क्या वस्तुओं के साथ अन्य तरीकों से लौटे करना है? खासकर अगर यह तीसरी पार्टी लाइब्रेरी से आ रहा है? मुझे अपने सभी वैरिएबल को वैकल्पिक के रूप में चिह्नित करने का विचार पसंद नहीं है, क्योंकि यह बहुत अधिक ओवरहेड जोड़ देगा। साथ ही, मुझे अंतर्निहित रूपांतरण बनाने का विचार पसंद नहीं है (क्योंकि इसे प्रत्येक कक्षा के लिए अतिरिक्त कक्षा की आवश्यकता होगी जिसे मैं नोट नूल के रूप में चिह्नित करना चाहता हूं।
मैंने प्रश्न Library support for Scala's NotNull trait पर भी प्रश्न की जांच की लेकिन यह मेरी समस्या को हल करने में मदद नहीं की।
आप सही समझते हैं, NotNull विशेषता सिर्फ एक मार्कर है। यह और कुछ नहीं करता है। – Jatin