2010-03-19 20 views
19

biraz pb var. Ben javacast Bir koleksiyona bir liste

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

yılında Koleksiyonuna bir listesi döküm istiyorum ama

+4

Ben tavsiyem java temelinde hakkında bir kitap okumak için. Koleksiyon bir arayüz değil, bir sınıftır. Her ikisinin de farklı amaçlarını anlamak önemlidir. – extraneon

+0

@extraneon +1 Aynı şeyi önermek üzereydi. Temelleri doğru bir şekilde anlamadan koleksiyonları kullanmak iyi bir fikir değildir. – helpermethod

cevap

45

List<T> zaten uygulayan tipi Collection örneğini Can Collection<T> bu hata var - neden gerekir yeni bir tane oluştur

Collection<T> collection = myList; 

Hata mesajı kesinlikle doğru - doğrudan bir arabirimi başlatamazsınız.

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

Koleksiyon Yaptığımda Koleksiyon collection = new ArrayList (myList); Listemi Nesne obj.setMyCollection (koleksiyon) içine koyduktan sonra ; veya benim objemde koleksiyon Toplama değil ArrayList tanımlayın, böylece sonucu görmek istiyorum bir hata var – Mercer

+0

@Mercer Aradığınız yöntemin imzası nedir?Bir liste, setMyCollection (Koleksiyon koleksiyonu) üzerinde çalışmalıdır, ancak örn. setMyCollection (Map collection) :) Ve eğer setMyCollection (List koleksiyonu) ise, o zaman bir liste ilan etmiş olmalısınız: List collection = new ArrayList(); (Bu işlemi kısaltmak için generikleri kaldırdım) – extraneon

2

Döküm bir new ihtiyacı asla: varolan listesinin bir kopyasını oluşturmak isterseniz, aşağıdaki gibi bir şey kullanabilirsiniz

Collection<T> collection = myList; 

Hatta dökme açık yapmazlar, Collection, süper bir List olduğundan, bu şekilde çalışır.

+0

Bunu yaptığımda bir hatam var Tür uyuşmazlığı: Listeyi dönüştüremiyor Mercer

+0

@Mercer: Burada java.util.List 'den bahsediyor musunuz? Bize biraz bağlam verebilir misiniz (örneğin, 'nasıl tanımlanır)? –

+0

@Mercer: Lütfen kısa ama * tam * örnek sağlayın. –

0

Kodunuzu bilmiyorsanız, sorunuzu yanıtlamak biraz zor, ancak burada yer alan tüm bilgilere dayanarak, Koleksiyon'un Koleksiyon olarak tanımlanan bir nesneyi geçen Collections.sort öğesini kullanmaya çalıştığınıza inanıyorum. bunu desteklemiyor.

İlk soru. İstemci neden bu kadar genel olarak tanımlandı? Neden bir Liste, Harita, Set ya da biraz daha spesifik bir şey değil?

İstemci Liste, Eşleme veya Küme olarak tanımlanmışsa, bu sorunu olmazdı, çünkü doğrudan Koleksiyonlar.sort (istemci) 'yi kullanabilirsiniz.

HTH

0

bir koleksiyon

Çözüm 1

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

Çözüm 2

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

Çözüm 3

listeyi dönüştürmek için birden solusions Orada var

Çözüm 4

List<? extends Contact> col = new ArrayList<Contact>(CONTACTS); 
İlgili konular