SORU
24 Mart 2009, Salı


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
24 Mart 2009, Salı


HashMap<String, String> örneği Map<String, ?> Map<String, Object> maçlar. Eğer yazar mısın . bir şey Strings 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: InputStreamInputStreams 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.)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MyTiredBones

    MyTiredBones

    2 Temmuz 2013
  • pain975

    pain975

    27 NİSAN 2008
  • wafflepwn

    wafflepwn

    14 AĞUSTOS 2008