2012-10-14 11 views
6

मैंने इस कंपाइलर त्रुटि <identifier> expected का अर्थ यह जानने के लिए बहुत कुछ किया है, और उनमें से कोई भी मेरी स्थिति पर लागू नहीं होता है। वास्तव में खेद है कि यह एक डुप्लिकेट या मूल जानकारी है, लेकिन मुझे कहीं भी कुछ भी नहीं मिल रहा है।जावा कंपाइलर त्रुटि कोई समझ नहीं बना रही है (<identifier> अपेक्षित)

निम्नलिखित कोड ठीक काम करता है। ध्यान दें कि मैं सकारात्मक myObject1 वास्तव में HashSet<String> है इसलिए कलाकार ठीक है।

@SuppressWarnings("unchecked") 
HashSet<String> s1 = (HashSet<String>) myObject1; 

निम्नलिखित कोड ठीक काम नहीं करता है। यह संकलन करेगा, लेकिन चेतावनियों के साथ।

@SuppressWarnings("unchecked") 
HashSet<String> s1; 
s1 = (HashSet<String>) myObject1; 

तो फिर मैं नीचे दिए गए कोड को आजमाएं।

@SuppressWarnings("unchecked") 
HashSet<String> s1; 
@SuppressWarnings("unchecked") 
s1 = (HashSet<String>) myObject1; 

अब यह भी संकलित करने के लिए मना कर दिया, मुझे <identifier> expected त्रुटि है कि मुझे इतना puzzling है दे रही है। मेरी कमांड लाइन में ^ प्रतीक अंतिम पंक्ति में = से पहले इंगित कर रहा है। मुझे यकीन नहीं है कि पृथ्वी पर मुझे s1 और = के बीच रखने की उम्मीद की जा सकती है।

कोई विचार? धन्यवाद!

+0

चूंकि संकलक वहां एक घोषणा की अपेक्षा करता है, इसलिए 's1' को एक प्रकार के नाम के रूप में पार्स किया गया है, तो निश्चित रूप से यह उम्मीद की जाती है कि प्रकार' s1' की एक इकाई को अगले नाम दिया जाए। –

+1

प्रश्न के दायरे के बाहर, आपको 'हैशसेट ' के बजाय 'सेट ' का उपयोग करना चाहिए। भले ही आप विकासशील चरण पर कार्यान्वयन वर्ग को जानते हों, आपको इंटरफेस पर विचार करना चाहिए। क्या होगा यदि कोई व्यक्ति कोड को 'ट्रीसेट' में स्थानांतरित करने का निर्णय लेता है, तो टीम * को इन सभी फ़ाइलों को 'हैशसेट' से बदलना चाहिए और इसे 'ट्रीसेट' पर ले जाना चाहिए? –

+0

धन्यवाद लुइगी, मुझे पता है कि आपने मुझे एक ही सवाल में एक ही बात बताई है और मैं अभी भी वही गलती कर रहा हूं ... अनुस्मारक के लिए धन्यवाद। :-) – The111

उत्तर

11

आप एक साधारण असाइनमेंट स्टेटमेंट पर एनोटेशन लागू नहीं कर सकते हैं।

एनोटेशन किसी भी घोषणा में संशोधक के रूप में इस्तेमाल किया जा सकता है, चाहे पैकेज (§7.4.1), वर्ग (§8.1.1) (enums सहित (§8.9)), इंटरफेस (§9.1.1: section 9.7 of the JLS से) (एनोटेशन प्रकार (§9.6) सहित), फ़ील्ड (§8.3.1, §9.3), विधि (§8.4.3, §9.4), औपचारिक पैरामीटर (§8.4.1), कन्स्ट्रक्टर (§8.8.3), या स्थानीय चर (§14.4.1)।

मैं मानता हूँ कि संकलक त्रुटि संदेश वैसे नहीं बल्कि साफ हो सकता है, ...

+0

धन्यवाद जॉन। मैंने अपने ओपी को थोड़ा सा संपादित करने के लिए संपादित किया है जो मैं वास्तव में करने की कोशिश कर रहा हूं। अगर मैं एक पंक्ति पर 's1' घोषित करना चाहता हूं लेकिन बाद में इसे असाइन करना चाहता हूं ... क्या मुझे असाइनमेंट पर मिलने वाली चेतावनी को दबाने का कोई तरीका है? पूरी विधि के लिए एनोटेशन डालने के अलावा, ज़ाहिर है, जो मैला लगता है। – The111

+3

अस्थायी चर का उपयोग करें और बाद में अस्थायी चर को s1 पर असाइन करें, जबकि अस्थायी चर सही प्रकार है – daniel

1

आप एनोटेशन के लिए जावा एपीआई को देखो सकता है।

http://docs.oracle.com/javase/6/docs/api/java/lang/SuppressWarnings.html

http://docs.oracle.com/javase/6/docs/api/java/lang/annotation/ElementType.html#LOCAL_VARIABLE

वहाँ आप देख सकते हैं, SupressWarnings लक्ष्य LOCAL_VARIABLE है।

और LOCAL_VARIABLE घोषणा के लिए खड़ा नहीं है असाइनमेंट।

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