Arasındaki fark nedir ? ve Java jenerik Nesne?
Eclipse bana Java jenerik düzgün kullanmak için bazı kod temizlemek için kullanıyorum. Çıkarım türleri mükemmel bir iş yapıyor, ama olayla türünü mümkün olduğunca genel olarak sahip olduğu bazı durumlar vardır çoğu zaman: Nesne. Ama Eclipse bana Nesnenin bir türü ve bir tür arasında seçim için bir seçenek gibi görünüyor '?'.
Arasındaki fark nedir Peki:
HashMap<String, ?> hash1;
ve
HashMap<String, Object> hash2;
CEVAP
HashMap<String, String>
örneği Map<String, ?>
Map<String, Object>
maçlar. Eğer yazar mısın . bir şey String
s haritaları kabul eden bir yöntem yazmak istiyorum ki:
public void foobar(Map<String, Object> ms) {
...
}
HashMap<String, String>
bir tedarik edemezsin. Eğer yazarsanız
public void foobar(Map<String, ?> ms) {
...
}
çalışıyor!
Bir şey bazen Java jenerik de yanlış List<String>
List<Object>
bir alt türü değildir. (Ama String[]
jenerik ve diziler iyi karışmaz neden aslında sebeplerinden biri bu Object[]
, çalışmaları devam ediyor. (Java diziler, jenerik değil, kovaryantdeğişmeyen)).
Örnek:
InputStream
InputStream
s ve alt List
s kabul eden bir yöntem yazmak istersen yaz
public void foobar(List<? extends InputStream> ms) {
...
}
Bu arada: Joshua Bloch's Effective Java Java kadar basit şeyleri anlamak istediğin zaman mükemmel bir kaynaktır. (Senin sorunun cevabını da çok iyi kitap alınmıştır.)
Yumuşak bir referans ve Java zayıf bir...
Kurallı, isim, basit isim ve Java Ders...
Java seri hale getirilebilir ve Extern...
' ve' ve', ' Java ...
(EE) Java Geliştiriciler için Eclipse ...