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
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ı.
Neden &; son" Java 8 arabirim yön...
Neden Java Koleksiyonları doğrudan İlk...
Neden Java statik olarak bir sınıf bil...
Neden't JUnit assertNotEquals yön...
Liste<Köpek> Listenin alt<Hay...