我寫了一個API,其中一個方法以java.util.Map
作爲參數。所提供的地圖包含必須按廣告訂單排序的數據。所以我特別提到了這個說法,作爲java.util.LinkedHashMap
。但是我的一位同事要求我只是將參數聲明爲Map,並且API的javadoc應該讓客戶端知道。LinkedHashMap或Map
我不明白爲什麼java.util.LinkedHashMap
是一個不好的做法,爲什麼我應該通過接口。這不是不必要的工作,如果客戶不注意文檔,可能會導致功能錯誤(我知道他們應該這樣做)。
如果它必須作爲'LinkedHashMap'函數,則需要一個'LinkedHashMap'。如果它只能作爲一個Map來使用,則需要一個Map。 – Vulcan
你的意思是,如果它只起到LinkedHashMap的作用,那麼應該使用LinkedHashMap? – user2296988
誰將使用API?正如我所看到的,在類型安全性和多態性之間存在權衡。一方面,通過要求'LinkedHashMap',你保證地圖將具有所需的排序屬性。但另一方面,有人可能有另一個'Map'實現,它也滿足所需的排序屬性,但如果您需要'LinkedHashMap',則它將不可用。 – Ben