2016-03-24 25 views
0

Bir listedeki genel nesnelere erişmek istiyorum ancak her zaman uyumsuz bir typs hata iletisi alıyorum. genellikle deGenel bir sınıfın bir Arraylisti

MyGenericContainer <Cursor> cursorContainer = new MyGenericContainer<Cursor>(c); 
ArrayList <MyGenericContainer> arrayList = new ArrayList<MyGenericContainer>(); 
arrayList.add(cursorContainer); 
Cursor cursor = arrayList.get(0).getValue(); 

bir listeye jenerik nesneleri koymak ve (döküm olmadan) her birine erişmek için bir yol var?

cevap

1

Bir çiğMyGenericContainer ile yazılan ArrayList kuruyoruz. Böylece, derleyici, ArrayList öğesinin Object örneklerinden MyGenericContainer oluşacağını ima eder. Bunu düzeltmek için

, sen MyGenericContainer Çeşidi tip parametresi ayarlamanız gerekir: Eğer Java7 + 'da iseniz

List<MyGenericContainer<Cursor>> arrayList = new ArrayList<MyGenericContainer<Cursor>>(); 

, o zaman elmas (<>) yararlanabilir, hangi Daha az ayrıntılı bir açıklama yazmanıza izin verir:

List<MyGenericContainer<Cursor>> arrayList = new ArrayList<>(); 
+0

Elmas operatörünü kullanabileceğini eklemek istersiniz; ve tip bilgisini tekrarlamaya gerek yoktur. – GhostCat

+0

Teşekkürler, @ Jägermeister, yapacağım. –

+0

Cevabınız için teşekkür ederiz. Ama genellikle listedeki farklı sınıflardan nesneleri koymak istiyorum: 'yeni ArrayList arrayList = new ArrayList(); arrayList.add (new String()); arrayList.add (new Integer()); int a = arrayList.get (1); // ' ' lere dönüşmesi gerekiyor Bu çözüm, jeneriklerle (cast olmadan) çözmek istiyorum. – logerom

3

Arraylistinizi oluştururken bir şeyleri kaçırmıyor musunuz?

böyle Değişim onu ​​ve sorunsuz çalışır herhalde:

ArrayList <MyGenericContainer<Cursor>> arrayList = new ArrayList<MyGenericContainer<Cursor>>(); 
İlgili konular