SORU
2 EYLÜL 2009, ÇARŞAMBA


&Lt arasında fark nedir? süper E> ve <? E> uzanır;?

<? super E> <? extends E> arasındaki fark nedir?

Sınıf java.util.concurrent.LinkedBlockingQueue bak örneğin kurucu için şu imza var:

public LinkedBlockingQueue(Collection<? extends E> c)

ve bu yöntem için:

public int drainTo(Collection<? super E> c)

CEVAP
2 EYLÜL 2009, ÇARŞAMBA


İlk olduğunu söylüyor "E atası olan bir tür"; ikincisi, diyor ki "E bir alt sınıfı olan bir tür". (E Tamam kendisi, her iki durumda da.)

Kurucu o zaman o garanti yani ? extends E form kullanırgetirirkoleksiyonu değerleri, E veya bazı alt (yani uyumlu). drainTo yöntem değerleri koymak için çalışıyoriçinekoleksiyon, koleksiyon E öğe türüne sahip olması gerekirya da bir üst sınıf.

Örnek olarak, böyle bir sınıfın olduğunu varsayalım:

Parent extends Object
Child extends Parent

ve bir LinkedBlockingQueue<Parent>. Child Her bir ebeveyn olduğu için tüm öğeleri güvenli bir şekilde kopyalama, List<Child> Bu geçen oluşturabilirsiniz. Bazı elementler Parent ile uyumlu olmayabilir çünkü List<Object> başarılı olamazsın.

Aynı şekilde yapabilirsiniz tahliye kuyruğuna List<Object> çünkü her Parent Object... ama yapamadın drenaj içine List<Child> çünkü List<Child> bekler tüm unsurları ile uyumlu Child.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AlaskanGrizzly

    AlaskanGrizz

    30 EKİM 2009
  • Codecourse

    Codecourse

    3 ŞUBAT 2009
  • Rooster Teeth

    Rooster Teet

    11 Temmuz 2006