2010-01-11 18 views
8
private final String[] okFileExtensions = new String[] { "csv" }; 

क्या कोई यह बताएगा कि {} स्ट्रिंग सरणी घोषणा के बाद क्यों लिखा गया है?अजीब स्ट्रिंग सरणी घोषणा सिंटेक्स

धन्यवाद।

+1

फ़ाइल एक्सटेंशन को स्पष्ट रूप से हार्डकोड करने की बजाए, एक गणना का उपयोग करने पर विचार करें। –

उत्तर

16

यह एक तत्व का एक सरणी है। इस मामले में String"csv" शामिल है।

जब एक घोषणा के भाग के रूप में लिखा है, यह एक अधिक संक्षिप्त रूप में लिखा जा सकता है:

private final String[] okFileExtensions = { "csv" }; 

बहु-तत्व सरणियों मूल्यों के बीच अल्पविराम का उपयोग। बिल्कुल कोई मूल्य नहीं होना चाहिए।

private final String[] okFileExtensions = { "csv", "tsv" }; 

private final String[] noFileExtensions = { }; 

यह ध्यान देने योग्य हो सकता है कि हालांकि संदर्भ अंतिम है सरणी नहीं है। तो अगर आप लिख सकते हैं:

okFileExtensions[0] = "exe"; 

एक तरह से इस के आसपास पाने के लिए संग्रह करने के लिए स्विच और एक unmodifiable कार्यान्वयन का उपयोग करने के लिए है:

private final Set<String> okFileExtensions = Collections.unmodifiableSet(
    new HashSet<String>(Arrays.asList({ 
     "csv" 
    })); 

JDK8 संग्रह में वृद्धि है कि इस अधिक संक्षिप्त कर देगा है करने का इरादा है । शायद List और Set भाषा के भीतर अक्षर। संभवतः:

private final Set<String> okFileExtensions = { "csv" }; 

संग्रह आमतौर पर सरणी (संदर्भ प्रकारों के लिए) पर प्राथमिकता दी जानी चाहिए।

+2

यदि आप सरणी में एकाधिक फ़ाइल एक्सटेंशन मान जोड़ना चाहते हैं तो आप उन्हें अल्पविराम से अलग कर देंगे। निजी अंतिम स्ट्रिंग [] okFileExtensions = {"csv", "txt", "sql"}; – TabbyCool

+0

मैंने अब अपने उत्तर में यह जोड़ा है। –

+0

'संग्रह आमतौर पर सरणी (संदर्भ प्रकारों के लिए) पर प्राथमिकता दी जानी चाहिए जो कि सरणी के उद्देश्य और दायरे पर निर्भर करता है। जैसा कि यहां दिया गया है यह मेरे स्वाद के लिए बहुत सामान्य है। जेडीके 7 एन्हांसमेंट का उल्लेख करने के लिए – rsp

2

strings इनलाइन की एक सरणी बनाना।

4

यह सरणी घोषणा के लिए जावा का वैध वाक्यविन्यास है।

आप उपयोग कर सकते हैं कि जब आप एक चर घोषित करने के बिना एक सरणी से गुजर रहे हैं:

public void printArray(String [] someArray) { 
     for(String s : someArray) { 
      System.out.println(s); 
     } 
    } 

और इस तरह यह आह्वान:

printArray(new String [] { "These", "are", "the", "contents"}); 

घुंघराले ब्रेसिज़ केवल जब सरणी घोषित किया जा सकता है इसलिए निम्नलिखित की अनुमति नहीं है:

Stirng [] a; 

a = {"on", "two"}; 
1

मुझे लगता है कि एक कम वर्बोज़ (भ्रमित) घोषित एनीयन होता:

private final String[] okFileExtensions = {"csv"}; 
+1

शायद ... लेकिन 'नया [] {...} 'वाक्यविन्यास और अधिक कर सकता है। –

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