Başkaları tarafından belirtildiği gibi get()
, vb. Nedenlerin genel olmaması, çünkü aldığınız girdinin anahtarının ilettiğiniz nesne ile aynı tür olması gerekmez get()
; yöntemin spesifikasyonu sadece eşit olmalarını gerektirir. Bu, equals()
yöntemin yalnızca nesneyle aynı türden değil, bir Nesne parametresiyle nasıl alındığından kaynaklanır .
Çoğu sınıfın equals()
, nesnelerinin yalnızca kendi sınıfındaki nesnelere eşit olabilmesi için tanımladığı genel olarak doğru olsa da, Java'da durumun böyle olmadığı birçok yer vardır. Örneğin, için belirtim List.equals()
, iki List nesnesinin hem Listeler hem de farklı uygulamaları olsa bile aynı içeriğe sahip olması durumunda eşit olduğunu belirtir List
. Bu nedenle, bu sorudaki örneğe geri dönersek, yöntemin spesifikasyonuna göre bir Map<ArrayList, Something>
ve benim için get()
bir LinkedList
argüman olarak çağırmak mümkündür ve aynı içeriğe sahip bir liste olan anahtarı almalıdır. Bu get()
, genel ve argüman türünü kısıtlamış olsaydı mümkün olmazdı .