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 LinkedListargü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ı .