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

  • Elly Awesome

    Elly Awesome

    15 ŞUBAT 2010
  • hans peder sahl

    hans peder s

    22 Temmuz 2009
  • Lupe Fiasco

    Lupe Fiasco

    23 ŞUBAT 2006