2010-03-19 17 views
19

मेरे पास कुछ पीबी है। मैं जावासंग्रह में एक सूची डाली

Collection<T> collection = new Collection<T>(mylList); 

में संग्रह करने के लिए एक सूची कास्ट करना चाहते हैं, लेकिन मैं इस त्रुटि

प्रकार संग्रह का दृष्टांत नहीं कर सकते

+4

मैं सलाह आप जावा के आधार के बारे में एक किताब को पढ़ने के लिए। संग्रह एक इंटरफेस है, कक्षा नहीं। दोनों के विभिन्न लक्ष्यों को समझना महत्वपूर्ण है। – extraneon

+0

@extraneon +1 एक ही चीज़ का सुझाव देने वाला था। मूल बातें की उचित समझ के बिना संग्रह का उपयोग करना एक अच्छा विचार नहीं है। – helpermethod

उत्तर

45

List<T> पहले से ही लागू करता Collection<T> है - तुम क्यों करने की आवश्यकता होगी एक नया बनाओ?

Collection<T> collection = myList; 

त्रुटि संदेश बिल्कुल सही है - आप सीधे एक इंटरफेस का दृष्टांत नहीं कर सकते।

Collection<T> collection = new ArrayList<T>(myList); 
+0

जब मैं संग्रह करता हूं संग्रह = नया ArrayList (myList); मेरी ऑब्जेक्ट obj.setMyCollection (संग्रह) में मेरी सूची डालने के बाद; या मेरे ओबीजे में संग्रह संग्रह को परिभाषित नहीं किया गया है, इसलिए जब मैं परिणाम देखना चाहता हूं तो मुझे एक त्रुटि है – Mercer

+0

@Mercer आप जिस विधि को बुला रहे हैं उसका हस्ताक्षर क्या है?एक सूची setMyCollection (संग्रह संग्रह) पर काम करना चाहिए, लेकिन अगर यह उदा। setMyCollection (मानचित्र संग्रह) :) और यदि यह सेट है MyCollection (सूची संग्रह) तो आपको उस सूची में कुछ डालना चाहिए सूची: सूची संग्रह = नया ArrayList(); (इसे छोटा करने के लिए जेनेरिक हटा दिए गए हैं) – extraneon

2

कास्टिंग की जरूरत है एक new कभी नहीं: आप मौजूदा सूची का एक प्रतिलिपि बनाना चाहते हैं, तो आप की तरह कुछ इस्तेमाल कर सकते हैं

Collection<T> collection = myList; 

तुम भी डाली स्पष्ट नहीं करते हैं, क्योंकि CollectionList का एक सुपर-प्रकार है, इसलिए यह इस तरह काम करेगा।

+0

जब मैं ऐसा करता हूं, तो मुझे त्रुटि होती है टाइप मिस्चैच: संग्रह संग्रह Mercer

+0

@Mercer: क्या आप यहां 'java.util.List' के बारे में बात कर रहे हैं? क्या आप हमें कुछ संदर्भ दे सकते हैं (उदाहरण के लिए, '' परिभाषित किया गया है)? –

+0

@ मर्सर: कृपया एक छोटा लेकिन * पूरा * उदाहरण प्रदान करें। –

0

अपने कोड जानने नहीं, यह थोड़ा आपके सवाल का जवाब देना मुश्किल है, लेकिन सभी जानकारी यहाँ पर आधारित है, मेरा मानना ​​है कि इस मुद्दे को आप Collections.sort गुजर उपयोग करने के लिए एक वस्तु संग्रह के रूप में परिभाषित में कोशिश कर रहे हैं, और प्रकार है इसका समर्थन नहीं करता है।

पहला प्रश्न। ग्राहक को सामान्य रूप से परिभाषित क्यों किया जाता है? यह सूची, मानचित्र, सेट या कुछ और विशिष्ट क्यों नहीं है?

यदि ग्राहक को सूची, मानचित्र या सेट के रूप में परिभाषित किया गया था, तो आपके पास यह समस्या नहीं होगी, तब आप सीधे संग्रह .sort (क्लाइंट) का उपयोग करने में सक्षम होंगे।

HTH

0

वहाँ एक संग्रह

समाधान 1

List<Contact> CONTACTS = new ArrayList<String>(); 
// fill CONTACTS 
Collection<Contact> c = CONTACTS; 

समाधान 2

private static final Collection<String> c = new ArrayList<String>(
               Arrays.asList("a", "b", "c")); 

समाधान 3

करने के लिए सूची में कनवर्ट करने के लिए कई solusions है

समाधान 4

List<? extends Contact> col = new ArrayList<Contact>(CONTACTS); 
संबंधित मुद्दे