SORU
27 NİSAN 2010, Salı


Jenerik Java: PECS Nedir?

Karşısında PECS (kısa için geldimYapımcı extends Tüketici super) jenerik üzerine okuma yaparken.

Birisi PECS extends super arasındaki karışıklığı gidermek için nasıl kullanılacağını bana açıklayabilir mi?

CEVAP
27 NİSAN 2010, Salı


tl;dr:"PECS" görüş toplama noktası. Eğer varsasadecegenel bir koleksiyondan çekerek, yapımcı ve eğer varsa extends; kullanmalısınızsadeceöğeleri doldurma, bir tüketici ve super kullanmalısınız. Eğer aynı koleksiyonu ile de, ya da extends super kullanmamalısın.


Parametre olarak alan bir yöntem olduğunu varsayalım şeyler koleksiyonu, ama Collection<Thing> sadece kabul daha esnek olmak istiyorum.

Durum 1: koleksiyonu geçmesi ve her öğe ile bir şeyler yapmak istiyorum.
O zaman bir listeyapımcıyani Collection<? extends Thing> bir kullanmalısınız.

Muhakeme Collection<? extends Thing> Thing, herhangi bir alt tutabilir ve böylece her öğe işleminizi gerçekleştirdiğinizde Thing gibi davranır. (Aslında edemiyor hangi zamanında olduğunu, çünkü Collection<? extends Thing>, bir şey ekleyemezözelThing alt grup içerir.)

Durum 2: koleksiyonu için bir şeyler eklemek istiyorum.
O zaman bir listetüketiciyani Collection<? super Thing> kullanmalısınız.

Mantık burada Collection<? extends Thing>, Collection<? super Thing> aksine her zaman Thing bir gerçek parametreli türü ne olursa olsun tutmak. Burada zaten listede Thing eklenecek sağlayacak sürece ne olduğu önemli değil; bu ? super Thing garanti eder.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • jbignacio

    jbignacio

    13 Mart 2006
  • Rhapsody

    Rhapsody

    7 ŞUBAT 2008
  • TheOtherMau5

    TheOtherMau5

    6 Mart 2012