2011-11-26 10 views
10

मैंने अभी नेटबीन्स 7.1 बीटा का उपयोग शुरू किया है और यह एक प्रकार की त्रुटियों को बुला रहा है जिसे मैंने कभी नहीं देखा है। विशेष रूप से:मेरे प्रबंधित बीन्स में मेरे पास स्थिर सार्वजनिक क्षेत्र क्यों नहीं हो सकते हैं?

A managed bean with a public field should not declare any scope other than @Dependent.

क्षेत्रों इसके बारे में शिकायत कर रहा है public static final हैं। मैं गैर स्थैतिक क्षेत्रों पर प्रतिबंध को समझ सकता हूं, लेकिन मैं एक अच्छे कारण के बारे में नहीं सोच सकता कि इसे स्थिर क्षेत्र के लिए अनुमति नहीं दी जाएगी। दुर्भाग्य से मैं उनमें से बहुत से उपयोग करता हूं क्योंकि मुझे अपने कोड में स्थिरांक पसंद नहीं है।

मुझे लगता है कि संपादक में मार्जिन में लाल बिंदु प्राप्त करने के बावजूद, मैवेन-संचालित बिल्ड अभी भी काम करता है और ग्लासफ़िश अभी भी मेरे आवेदन को जिस तरह से उम्मीद करता है, चलाता है।

तो इस मुद्दे पर मेरा निंदा क्या है? क्या मुझे अपने स्थिर क्षेत्रों को कहीं और स्थानांतरित करना होगा या क्या इसे संभालने का कोई और तरीका है?

+2

नोट: जेएसएफ इसे मना नहीं करता है। यह नेटबीन्स है जो कुछ अस्पष्ट कारणों से करता है, शायद कुछ सीडीआई स्पेक प्रतिबंध द्वारा। चूंकि यह स्पष्ट रूप से बीटा संस्करण है, मैं सिर्फ नेटबीन्स लोगों को एक बग की रिपोर्ट करता हूं। – BalusC

उत्तर

5

javax.enterprise.injectpackage javadocs का हवाला देते हुए:

एक प्रबंधित सेम एक सार्वजनिक क्षेत्र है, यह गुंजाइश @Dependent होना आवश्यक है।

लेकिन मैं @BalusC wih का मानना ​​है कि अगर यह संकलित, Netbeans यह चेतावनी के रूप में रिपोर्ट करना चाहिए है (यह करता है?)।

वैसे भी, क्या वे स्थिरांक वास्तव में एपीआई का हिस्सा हैं? मेरा मतलब है, क्या आप उन्हें कहीं और एक्सेस करते हैं लेकिन अपनी कक्षाओं में? यदि नहीं, तो निजीता को दृश्यता कम करें। (यदि आपको केवल दृश्य से स्थिरांक तक पहुंचने की आवश्यकता है तो आप निजी स्थिरता के लिए एक्सेसर्स भी बना सकते हैं)। यदि हां, तो मैं आपको सुझाव दूंगा कि वैसे भी उन्हें कहीं और स्थानांतरित करें।

+0

नेटबीन 7.1 बीटा (पूर्व संस्करण नहीं) बाएं मार्जिन में लाल बिंदु के साथ कक्षा रेखा को चिह्नित करें। हालांकि यह त्रुटि प्रोजेक्ट विंडो में अन्य त्रुटियों के तरीके तक विस्तारित नहीं होती है। आप सही हैं कि मेरे कई स्थिरांकों को जनता के बजाय निजी नामित किया जा सकता है, और मैं निर्यातकों को निर्यात करने योग्य स्थिरांक को पुनः प्राप्त कर सकता हूं (सेटर्स नहीं!)। हालांकि, मुझे आश्चर्य से लिया। जब आप उनकी जांच करते हैं तो अधिकांश जेएसएफ आवश्यकताएं अंतर्ज्ञानी समझ में आती हैं; यह अभी भी नहीं करता है। – AlanObject

+0

मध्यरात्रि के बाद कॉफी पर थके हुए डेवलपर के उच्च मामले के आगे संदर्भ के लिए म्यूटेटर भाग को फिक्स्ड करें। वैसे भी, यदि आप Netbeans टीम के लिए एक बग की रिपोर्ट करना चाहते हैं, [यहां] (http://netbeans.org/community/issues.html) जगह है। यदि यह संकलित और ठीक चलाता है, तो नेटबीन्स टीम ने [चश्मा] (http://jcp.org/aboutJava/communityprocess/final/jsr299/index.html) का गलत व्याख्या किया है (या शायद चश्मा स्थैतिक चर के बारे में स्पष्ट नहीं हैं, और यह एक कार्यान्वयन विशिष्ट विस्तार के रूप में छोड़ दिया गया है ...)। बस मामले में, चश्मा पढ़ें और खुले किनारे पर बहस के लिए तैयार रहें, यह उस सड़क के नीचे आता है। –

+1

यहां लिंक किए गए चश्मा से उद्धरण दिया गया है: (पृष्ठ 27, - 3.1 प्रबंधित बीन्स): 'यदि सार्वजनिक क्षेत्र के साथ प्रबंधित बीन किसी भी @ निर्भरता के अलावा अन्य दायरे घोषित करता है, तो कंटेनर स्वचालित रूप से समस्या का पता लगाता है और इसे एक के रूप में मानता है परिभाषा त्रुटि। यह कक्षा चर बनाम ऑब्जेक्ट फ़ील्ड के बारे में कुछ भी नहीं कहता है, लेकिन शायद यह गेविन किंग के लिए एक अच्छा सवाल है: डी। –

4

सार्वजनिक क्षेत्र (स्थैतिक या नहीं) प्रॉक्सीबल नहीं हैं - यही कारण है कि वे केवल निर्भर स्कॉप्ड हो सकते हैं। इसके आसपास काम करने के लिए आप स्पष्ट रूप से गेटटर विधियों के माध्यम से उन्हें एक्सेस कर सकते हैं।