我应该返回 List 还是 ArrayList?

2022-09-05 00:36:39

我发现自己同意返回一个接口而不是一个具体的类。

原因很简单,我想要松散耦合。

但是,是否会有其他影响或权衡取舍?


答案 1

最好返回适合您的接口的最通用的类型。

如果有某种原因本身就适合您要返回的数据,那么您应该使用它。通常没问题,但如果返回值本质上是无序的,您也可以考虑使用:ArrayListListCollection

Diagram of Java collections hierarchy


答案 2

对于像List或ArrayList这样的类型,不应该有任何复杂性,你应该将List提升代码返回到接口

您会发现自己这样做受到限制,如果这是来自并发包(如CopyOnWriteArrayList),并且您使用的是addIfAbsent等方法,这些方法未在List界面中定义。

因此,如果您返回ArrayList或任何具体的实现,则可以使用未在合约(接口)中定义的API,但是这样您将受到限制,无法从特定实现更改为其他实现(从到),因为使用API的每个人都必须根据您的更改进行更改。我认为这太期待了。ListArrayListLinkedList