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

  • Justin Case

    Justin Case

    3 EKİM 2011
  • Rachel Raum

    Rachel Raum

    10 EYLÜL 2007
  • RocketJump

    RocketJump

    22 ŞUBAT 2006