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

  • BigDawsTv

    BigDawsTv

    20 HAZİRAN 2012
  • midomansour

    midomansour

    19 EYLÜL 2009
  • xiaoyu85

    xiaoyu85

    20 ŞUBAT 2010