2013-06-05 9 views
6

ग्रहण में @NonNullByDefault एनोटेशन है, जो सभी मानों को @NonNull के रूप में मानता है जब तक कि आप उन्हें @Nullable के रूप में स्पष्ट रूप से एनोटेट नहीं करते।क्या आईडीईए में कोई @NonNullByDefault एनोटेशन है?

क्या इंटेलिजे आईडीईए में कोई समकक्ष विकल्प है, या क्या आपको हमेशा @Nonnull का उपयोग करना है?

+1

क्या इसके बजाय '@ Nonnull' नहीं है (जेएसआर 305)? आईडीईए '@ नोट नूल 'का उपयोग कर सकता है, लेकिन यह एक अलग एनोटेशन है। – fge

+0

@fge धन्यवाद, मैंने इसे ठीक किया। –

+0

वैसे, आप उस एनोटेशन का क्या उपयोग करेंगे? क्या यह स्थिर स्रोत कोड विश्लेषण के लिए है? आईडीईए FindBugs का उपयोग कर सकते हैं, इसके लिए एक प्लगइन है। इन एनोटेशन का उपयोग करने के लिए, मैं गिइस की सलाह का पालन करता हूं: विधि पैरामीटर शून्य नहीं हो सकते हैं जब तक कि '@ Nullable' के साथ एनोटेटेड न हो। लेकिन यह नीति का सवाल है ... – fge

उत्तर

3

नहीं, वर्तमान में यह आईडीईए द्वारा समर्थित नहीं है।

एक सबूत के रूप में, खुले फीचर अनुरोध के बारे में लेना का लिंक allow 'NotNull' as the default element behavior for a given class or package पर देखें।

शायद इसी तरह की सुविधा JSR-305 के साथ मानक बन जाएगी, जिसमें @ParametersAreNonnullByDefault एनोटेशन और विपरीत एनोटेशन @ParametersAreNullableByDefault भी शामिल हो सकता है। ध्यान दें कि @NonNullByDefault के विपरीत, वापसी मान उन दो एनोटेशन द्वारा कवर नहीं किए जाते हैं। तो, आपको अभी भी वापसी मूल्य को स्पष्ट रूप से एनोटेट करना पड़ा था।

जो सभी वर्तमान स्थिति को नहीं बदलते हैं, हालांकि। न तो जेएसआर -305 मानक बन गया है, न ही आईडीईए इसे लागू करता है।

+2

आईडीईए के लिए वोट दें अब @ पैरामीटरअरेनॉनुलबइडफॉल्ट का समर्थन करें: http://www.jetbrains.com/idea/webhelp/@parametersarenonnullbydefault-annotation.html –

+0

^लिंक टिप्पणी में टूटा हुआ है ... यह एक काम करता है (अभी के लिए ...): https://www.jetbrains.com/help/idea/2017.1/parametersarenonnullbydefault-annotation.html – Lambart

7

आइडिया संस्करण 14 में JSR 305 "@TypeQualifierDefault" एनोटेशन के लिए समर्थन शामिल होगा, जो उपयोगकर्ता को एक कस्टम एनोटेशन बनाने की अनुमति देता है, जिसे पैकेज-info.java फ़ाइल में पैकेज घोषणा पर उपयोग किया जा सकता है, जो निर्दिष्ट करता है कि सबकुछ उस पैकेज में (केवल पैरामीटर नहीं, बल्कि विधि वापसी मान, स्थानीय चर, आदि) को शून्य मानों की अनुमति न देने के रूप में निहित रूप से एनोटेट किया जाएगा।

दुर्भाग्यवश, यह (वर्तमान में) उप-पैकेजों को दोबारा प्रभावित नहीं करता है, इसलिए प्रत्येक उप-पैकेज में पैकेज-info.java फ़ाइल भी होती है, जो घोषणा करता है कि उपन्यास एनोटेशन का उपयोग करने के लिए है।

विवरण और उपयोग का एक उदाहरण के लिए यहाँ देखें:

http://youtrack.jetbrains.com/issue/IDEA-125281

ध्यान दें कि यह पहले से ही प्रारंभिक प्रवेश कार्यक्रम में कार्यान्वित किया जाता (EAP) बनाता है।

संबंधित मुद्दे