क्यों काम करता है:प्रारंभ सूची <> Arrays.asList
String[] array = {"a", "b", "c"};
List<String> list = Arrays.asList(array);
लेकिन यह नहीं करता है:
List<String> list = Arrays.asList({"a","b","c"});
क्यों काम करता है:प्रारंभ सूची <> Arrays.asList
String[] array = {"a", "b", "c"};
List<String> list = Arrays.asList(array);
लेकिन यह नहीं करता है:
List<String> list = Arrays.asList({"a","b","c"});
यह एक छोटा हाथ ही उपलब्ध है जब निर्माण और एक सरणी बताए।
String[] array = {"a", "b", "c"};
आप इस हालांकि कर सकते हैं:
List<String> list = Arrays.asList("a","b","c");
asList
के रूप में "vararg" तर्क ले सकते हैं।
आप कोशिश कर सकते हैं
List<String> list = Arrays.asList(new String[] {"a","b","c"});
आपका प्रश्न क्यों एक काम करता है और अन्य ठीक है, नहीं करता है?
अच्छा, कारण यह है कि {"a","b","c"}
मान्य जावा अभिव्यक्ति नहीं है, और इसलिए संकलक इसे स्वीकार नहीं कर सकता है।
आपको इसके साथ क्या लगता है कि आप full array creation expression (जेएलएस 15.10) प्रदान किए बिना सरणी प्रारंभकर्ता को पास करना चाहते हैं।
सही सरणी सृजन का भाव, कर रहे हैं के रूप में अन्य लोगों ने बताया है
String[] array = {"a", "b", "c"};
रूप JLS 10.6 Array Initializers में कहा गया है, या
String[] array = new String[]{"a", "b", "c"};
रूप JLS 15.10 Array Creation Expressions में कहा गया है।
यह दूसरा एक इनलाइनिंग के लिए उपयोगी है, इसलिए आप सीधे सरणी चर के बजाय इसे पास कर सकते हैं।
के बाद से Arrays
में asList
विधि चर तर्क का उपयोग करता है, और चर तर्क भाव सरणियों पर मैप किए जाते, आप या तो एक इनलाइन सरणी में के रूप में दे सकते हैं:
List<String> list = Arrays.asList(new String[]{"a", "b", "c"});
या बस चर तर्क है कि स्वचालित रूप से पारित एक सरणी से मैप किया गया:
List<String> list = Arrays.asList("a","b","c");
नहीं है, आप कर सकते हैं 'Arrays.asList (" एक "," ख "," ग ");' है, जो कम है, और अधिक ओपी के मूल प्रश्न के समान है। –
थॉमस ने जो कहा वह अभी भी वैध है और डाउनवोट के लायक नहीं है। – Jeshurun
नहीं, उसने जो कहा वह "आप * लिखने के लिए है", जो असत्य है, इसलिए, हाँ, यह * एक डाउनवोट के लायक है। –