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

  • Andrew_Huang

    Andrew_Huang

    10 ŞUBAT 2006
  • Codecourse

    Codecourse

    3 ŞUBAT 2009
  • GOTO Conferences

    GOTO Confere

    3 EKİM 2011