2009-07-13 7 views
7

मैंने गलती से मेरी एनोटेशन सूचियों में से एक के अंत में एक अतिरिक्त कॉमा छोड़ा, लेकिन यह मेरी मशीन पर ठीक संकलित हुआ।क्या जावा एनोटेशन सूचियां अंतिम प्रविष्टि के बाद अतिरिक्त कॉमा की अनुमति देनी चाहिए?

@NamedQueries({ @NamedQuery(name="name1",query="FROM Foo"), @NamedQuery(name="name2",query="FROM Bar"), })

सूचना दूसरा @NamedQuery के बाद अतिरिक्त अल्पविराम: उदाहरण के लिए। ऐसा लगता है कि मेरी मशीन पर ठीक संकलन है, लेकिन किसी और को अपनी मशीन पर कोड संकलित करने में समस्याएं थीं, इसलिए मैंने इसे हटा दिया। लेकिन अब मैं उत्सुक हूं कि इसे अनुमति दी जानी चाहिए, और यदि ऐसा है, तो जावा का कौन सा संस्करण इसे अनुमति देता है।

मैं इसे कहीं भी ऑनलाइन किसी भी संदर्भ में नहीं ढूंढ पाया।

उत्तर

6

मुझे लगता है कि इस मामले में आप Array Initializers से निपट रहे हैं जो अतिरिक्त कॉमा की अनुमति देता है।

उदाहरण:

int[] foo = new int[] { 1, 2, 3, };

यह शुरू से ही JLS का हिस्सा रहा है।

+0

> एक पिछला कॉमा एक सरणी प्रारंभकर्ता में अंतिम अभिव्यक्ति के बाद प्रकट हो सकता है और इसे अनदेखा किया जाता है। (+1) – Tim

+2

जावा भाषा विशिष्टता स्पष्ट रूप से एनोटेशन Arrays (http://java.sun.com/docs/books/jls/third_edition/html/interfaces.html#9.7) में पिछली कॉमा की अनुमति देती है। हालांकि जावा में एक बग प्रतीत होता है जो एक त्रुटि फेंकता है ("अभिव्यक्ति की अवैध शुरुआत")। तो सुरक्षित पक्ष पर रहने के लिए आपको एनोटेशन में पिछली कॉमा का उपयोग नहीं करना चाहिए, जबकि वे सरणी प्रारंभकर्ताओं में काफी ठीक हैं। –

4

ध्यान दें कि यह कुछ एनोटेशन प्रोसेसिंग संदर्भों में काम करेगा, न कि दूसरों में। यदि आप सूर्य की कमांड लाइन एपीटी का उपयोग कर रहे हैं, तो यह एक ग़लत त्रुटि का कारण बन जाएगा। (यह ग्रहण में ठीक काम करता है, हालांकि)

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