2015-07-06 12 views
22

में "NullableProblems" क्यों मैं इस पर इंटेलीजे में "NullableProblems" निरीक्षण से एक चेतावनी हो रही हूँ:अस्पष्ट निरीक्षण चेतावनी इंटेलीजे

public class Test implements Comparable<Test> { 
    @Override 
    public int compareTo(Test o) { 
     return 0; 
    } 
} 

मैं IntelliJ 14.1.4 उपयोग कर रहा हूँ और जावा 1.7 के साथ

संकलन

स्क्रीनशॉट:

enter image description here

तर्क से पहले @NotNull जोड़ा जा रहा है मदद नहीं करता है:

enter image description here

+0

'' बारे में सब कुछ पढ़ें @ Nullable'' और '' @ NotNull'' सुविधाओं [यहां] (https://www.jetbrains.com/idea/documentation/howto।एचटीएमएल) –

+0

डुप्लिकेट: http://stackoverflow.com/questions/24728627/meaning-of-android-studio-error-not-annotated-parameter-overrides-nonnull-para – davidgiga1993

+3

@ davidgiga1993 डुप्लिकेट नहीं। मैं एक ऐसी विधि को ओवरराइड कर रहा हूं जिसमें '@ NotNull' एनोटेशन नहीं है। – traveh

उत्तर

18

Comparable.compareTo से:

@throws NullPointerException if the specified object is null 

तो इंटेलीजे जानता है, उस वस्तु null नहीं होना चाहिए और एक @NotNull एनोटेशन automatically जोड़ता है:

IntelliJ विचार एसडीके को ध्यान से गौर करेंगे और पुस्तकालयों बाईटकोड और इच्छा इन एनोटेशन को स्वचालित रूप से अनुमानित करें ताकि बाद में उन स्थानों को स्थानांतरित करने के लिए स्रोत कोड का विश्लेषण करने के लिए उपयोग किया जा सके जहां आपने शून्य को अनदेखा किया था।

आपका ओवरराइड विधि यह व्याख्या शामिल नहीं है, तो यह ओवरराइड इस व्यवहार पैरामीटर नल बनाने - Comparable इंटरफेस के अनुबंध के खिलाफ।

पैरामीटर से पहले @NotNull जोड़कर आप इसे हल कर सकते हैं।

तुम भी Alt दबाने + दर्ज करें, पॉपअप मेनू में चेतावनी का चयन और सब-मेनू में Disable inspection का चयन करके इस निरीक्षण निष्क्रिय कर सकते हैं।

चेक बाहर Web Help और this thread अधिक जानकारी के बारे में @NotNull/@NonNull एनोटेशन के लिए।

+4

हम्म, अब मैं समझता हूं कि मूल चेतावनी कहां से आती है (सुपर क्लास की जांच पहली चीज़ थी जिसे मैंने चेक किया था), लेकिन जब मैंने '@ नोट नूल' जोड़ा तो उसने चेतावनी को साफ़ नहीं किया ... (स्क्रीनशॉट के साथ मूल प्रश्न अपडेट किया गया) । – traveh

+3

आप "गलत" 'NotNull' एनोटेशन का उपयोग कर रहे हैं। वहां [कई नोटन/गैर-नॉट एनोटेशन] हैं (http://stackoverflow.com/questions/4963300/which-notnull-java-annotation-should-i-use) वहां से, उनमें से कोई भी जेडीके में शामिल नहीं है। आपको उनमें से एक को शामिल करने और उपयोग करने की आवश्यकता होगी। [वेब सहायता] (https://www.jetbrains.com/idea/documentation/howto.html) भी देखें। –

+2

हा! अजीब, जब मैंने @NotNull को जोड़ा तो आयात इंटेलिजे स्वचालित रूप से जोड़ा गया (alt-enter मेरा मतलब है)। मैंने आपके द्वारा लिंक किए गए दूसरे प्रश्न को देखा और मुझे लगता है कि 'com.intellij.annotations.NotNull' सही एनोटेशन है, लेकिन ऐसा लगता है कि IntelliJ कक्षा नहीं ढूंढ सकता ... – traveh

0

इसके कि क्योंकि आप एक विधि है कि एक @NotNull एनोटेशन नहीं है अधिभावी कर रहे हैं।

इंटेलिजे आईडीईए आपको चेतावनी देता है कि ओवरराइडिंग विधि में @NotNull एनोटेशन नहीं है।

+0

नहीं। इंटरफेस की जांच करें। – traveh

4

इसे इंटेलिजे आईडीईए में आसानी से कॉन्फ़िगर किया जा सकता है और मेरे लिए व्यक्तिगत रूप से अनुशंसित तरीका है। यदि आप चाहते हैं कि आप अपनी खुद की टिप्पणियां जोड़ सकें। सेटिंग के
यानी javax.validation.constraints.NotNull

पथ:
Settings > Editor > Inspections > @NotNull/@Nullable problems > Configure annotations

कुछ स्क्रीनशॉट: enter image description here enter image description here

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