SORU
19 EYLÜL 2008, Cuma


Neden't Java Koleksiyonları yöntemleri kaldırmak Soysal değil mi?

Neden mi Collection.remove(Object o) genel değil mi?

Collection<E> gibi boolean remove(E o); olabilir

Yanlışlıkla (örneğin) her tek tek bir Dize yerine Set<String> kaldırmak için çalıştığınızda o zaman, Collection<String>, hata ayıklama bir sorun daha sonra zaman derleme hatası yerine olurdu.

CEVAP
2 Mayıs 2009, CUMARTESİ


remove() (Collection Map olarak) remove() nesne her türlü geçmek gerekir, çünkü genel değil. Nesne kaldırıldı remove(); yalnızca onlar eşit olmasını gerektirir için geçmesi nesnenin türü ile aynı olmak zorunda değildir. *9,* ** 10 kaldırır özellikleri (o==null ? e==null : o.equals(e)) nesne e doğrudur. Hiçbir şey o ve e aynı tip olmak için gerekli olduğunu unutmayın. Bu parametre, sadece nesne ile aynı tür olarak equals() Bu yöntem, bir Nesne götüren gerçeğini izler.

Birçok sınıf nesneleri sadece kendi sınıfının nesneleri eşit olabilir equals() tanımlanan yaygın olarak doğru olabilir, ancak bu kesinlikle her zaman böyle değildir. Örneğin, Liste belirtimi.() eşitse Listesi. farklı uygulamaları olsa bile iki Liste nesneleri Listeler ikisi de aynı içeriğe sahip ise eşit olduğunu söylüyor, Bu yüzden geri dönüyorum örnekte bu soru, şu an için Map<ArrayList, Something> ve bana çağrı remove() LinkedList olarak tartışma ve kaldırmak anahtar bir liste ile aynı içeriği. Bu remove() genel ve bağımsız değişken türü ile sınırlı ise mümkün olmazdı.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 2ndfloor91

    2ndfloor91

    17 Kasım 2007
  • ASUS North America

    ASUS North A

    12 AĞUSTOS 2008
  • itfigueres

    itfigueres

    12 EKİM 2013