我写了一个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