kullanarak?Koleksiyon nesnesi oluşturma Genellemelere
cevap
Bu
List<Animal> list = new ArrayList<Dog>();
parametreli türü gibi benzer hata iki ucunda aynı tip gerektiğidir. Miras (IS-A) kavramı yoktur. Eğer hala kullanmak istiyorsanız, sadece eşittir işaretinin sol tarafında izin verilen genişletilmiş/süper anahtar kelime ile joker (?) Kullanın. Biri Cat
eklemek çalışırsa daha sonra başarısız ve atış istisna olacak
List<Animal> list = new ArrayList<Dog>(); // is not allowed
ama
Animal[] animal = new Dog[10]; //is allowed
animal[0] = new Dog(); // is allowed
nesneyi (Hayvan uzanır).
animal[1] = new Cat(); //compiles fine but throws java.lang.ArrayStoreException at Runtime.
animal[1]
veya animal[index]
Köpek reference
tutuyor unutmayın. Bu nedenle Dog
referans değişkeni, Cat
nesnesini değil Dog
nesnesini ifade edebilir. Bu nedenle, böyle bir senaryoyu önlemek için JSL, jenerikler listesinde/Koleksiyonda bu değişiklikleri yapmıştır. Bu cevap sizin sorunuz için de geçerlidir (Map
).
Parametreli tür her iki uçta da aynı türde olmalıdır.
List<Animal> list = new ArrayList<Animal>();
Genel değerler eşdeğerli değildir. Sen kullanabilirsiniz: atamanın dış sol taraftaki Map
"haline" mümkün olmakla birlikte
Map<Integer, Map<String, Integer>> myMap = new HashMap<Integer, Map<String, Integer>>();
^ ^
--------------^------------------- becomes ------^ |
-----------------must remain as type ---------------
atanmış gibi bir HashMap
, aynı jenerik parametreleri olarak görünen her türlü uygulanamaz.
Düzenleme: Bu sözdizimi girişleri haritaya eklenmesine izin ver ama bir olarak yararlıdır olmaz
Map<Integer, ? extends Map<String, Integer>> myMap = new HashMap<Integer, HashMap<String, Integer>>();
Not: @Keppil tarafından belirtildiği gibi
, sen sınırlı joker sözdizimi kullanabilirsiniz ve yöntemlerden geçirilecek yazın.
Bazı referanslar:
bu deneyin:
Map<Integer, HashMap<String, Integer>> myMap = new HashMap<Integer, HashMap<String, Integer>>();
Eğer t gibi bir şey gerekiyor onun:
Map<Integer, Map<String, Integer>> myMap = new HashMap<Integer, Map<String, Integer>>();
myMap.put(1, new HashMap<String, Integer>());
deneyin bu
Map<Integer, ? extends Map<String, Integer>> myMap = new HashMap<Integer, HashMap<String, Integer>>();
Daha sonra size Tamsayılar
ait HashSet bir çift eklemek çünkü,Set<Number> set = new HashSet<Integer>();
izin verilmeyen basit bir örnek üzerinde açıklamak daha problemsiz oluyor
set.add(1.0)
Not inci
Set<? extends Number> set = new HashSet<Integer>();
de sete null
ama bir şey eklemek izin vermez. Ama sadece burada http://docs.oracle.com/javase/tutorial/extra/generics/wildcards.html
Map<String, Integer>
HashMap<String, Integer>
aynı değildir Sen daha fazla bilgi bulabilirsiniz bunun
Numaralar'ı okuyabilir. İşte sorun bu.
Aslında HashMap Harita arabirimini uygular. Bu yüzden de `Harita
- 1. Bir koleksiyon widget'ı tema oluşturma
- 2. Veri/katsayılardan lm nesnesi oluşturma
- 3. Bir Ruby Nesnesi Sürümünü Oluşturma
- 4. yuvalanmış JSON nesnesi oluşturma dinamik
- 5. 'CGSize' türündeki koleksiyon öğesi bir Objective-C nesnesi değil
- 6. VBA - Bir koleksiyon koleksiyonuna nasıl koleksiyon eklenir
- 7. javascript'te yeni bir Konum nesnesi oluşturma
- 8. Aurelia ile anında bir dom nesnesi oluşturma
- 9. Bir ruby dosya nesnesi oluşturma Magick :: Image
- 10. İş Nesnesi Sınıfları'ndan DataContract sınıflarını otomatik oluşturma
- 11. Monitör Nesnesi Oluşturma Java'da ASM kullanarak
- 12. Kukla verilere sahip bir DataTable nesnesi oluşturma
- 13. ggplot2 içinde özel bir Stat nesnesi oluşturma
- 14. TFS Java SDK oluşturma PendingChange [] nesnesi
- 15. Yapımı boş bir VBA koleksiyon
- 16. Backbone Koleksiyon
- 17. Koleksiyon oluşturulamıyor
- 18. Koleksiyon Döndürme
- 19. Vertex Arabellek Nesnesi (VBO) ile Kinect Point Cloud Oluşturma
- 20. Python-Class-x nesnesi oluşturma 'split' özniteliğine sahip değil
- 21. piton sınıf nesnesi ve değişkenleri linked_list sınıfının nesne oluşturma
- 22. İki ayrı animasyonlu şelale nesnesi oluştururken tuvali oluşturma
- 23. Backbone js koleksiyonları koleksiyon sorunu
- 24. Bir koleksiyon laravel içinde bir koleksiyon içine nasıl döngü yapılır?
- 25. parametre nesnesi
- 26. MongoDB'de iki koleksiyon birleştirme
- 27. PropertyGrid özel koleksiyon editörü
- 28. Koleksiyon Görünümü, Rotation
- 29. RavenDB'de Koleksiyon Adının Belirlenmesi
- 30. Java'da Temalı Koleksiyon
sol tarafta> myMap = new HashMap >() uzanır; ' –
Keppil
? extends Map<String, Integer>
olmalı? Harita@Reimeus biraz daha açıklama benim için yararlı olacaktır .. –