2011-01-07 10 views
5

मुझे इस मामले का कभी सामना नहीं हुआ और अब मैं सोच रहा हूं: क्या होता है जब दो अलग-अलग टिप्पणियों का नाम समान होता है? (मैं यहाँ एक उदाहरण इंटेलीजे द्वारा प्रदान की एक एनोटेशन का उपयोग कर दूँगा लेकिन सवाल वास्तव में सामान्य है तो मैं यह नहीं कर रहा हूँ टैगिंग 'इंटेलीजे')क्या होता है जब दो अलग-अलग टिप्पणियों का नाम समान होता है?

उदाहरण पहला वाक्य यहाँ के लिए:

http://youtrack.jetbrains.net/issue/IDEABKL-4959

का कहना है:

कई पुस्तकालयों के लिए अपने स्वयं @NotNull एनोटेशन (IntelliJ, हाइबरनेट-मान्यता, ..) की है।

वास्तव में क्या होता अगर मैं उपयोग करना चाहता था, कहते हैं, दोनों इंटेलीजे के @NotNull और हाइबरनेट के @NotNull?

वे असंगत हैं (एक बार फिर से @NotNull सिर्फ एक उदाहरण है जहाँ मैं एक संघर्ष को खोजने के लिए होता है)? अगर वे असंगत हैं, तो क्या यह पूरी परियोजना के लिए है?

यह कुछ मैं वास्तव में से परिचित नहीं हूँ है ...

उत्तर

8

कोई अस्पष्टता नहीं है क्योंकि एनोटेशन के पैकेज का नाम एक आयात में या एनोटेशन पर ही निर्दिष्ट किया जाएगा, नहीं है।

JSR-305 अपने विशिष्ट उदाहरण को संबोधित करता है। यह एनोटेशन का एक मानक सेट चाहता है, और विशेष रूप से FindBugs 'और IntelliJ की शून्यता एनोटेशन को संदर्भित करता है।

शून्यता एनोटेशन (उदा।, @NonNull और @ चेकफ़ोरनुल)। FindBugs और दोनों IntelliJ पहले से ही अपने शून्यता एनोटेशन के संस्करणों का समर्थन करते हैं। के रूप में पूर्ण पैकेज नाम का हिस्सा है नहीं

6

तरह के एक मामले आप पूर्ण योग्य नाम निर्दिष्ट करना होगा में, उदाहरण के लिए:

@bar.baz.Foo 
@org.fubar.Foo 
void myMethod() {...} 
2

वे करते हैं। प्रभाव यह है कि आप केवल एक आयात कर सकते हैं और किसी अन्य को इसके पूर्ण योग्य नाम के साथ संदर्भित करना होगा। इसलिए

@NotNull 
@com.jetbrains.annotations.NotNull 
public Object ... 
+0

+1 ... ओच। यह पूरी तरह से योग्य नाम का उपयोग कर बदसूरत/verbose लग रहा है: - / – Gugussee

1

कि कोई फर्क नहीं जाएगा, क्योंकि प्रत्येक एनोटेशन के पूर्ण योग्य नाम ही नहीं होगा की तरह। आप योग्य नाम import अनुभाग पर घोषित कर सकते हैं।

0

यह समस्या एक ही नाम के साथ दो वर्ग/इंटरफेस/एनम्स/एनोटेशन के लिए समान है। उन्हें विभिन्न पैकेजों में दिखना चाहिए। यदि वे एक ही पैकेज में हैं (उदा। विभिन्न संस्करण) लेकिन अलग जार/निर्देशिकाएं, तो क्लासपाथ में पाए जाने वाले पहले व्यक्ति को चुना जाता है।

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