2012-04-26 121 views

回答

5

对于像List或ArrayList类型不应该有任何compilcation和你应该返回列表促进Code to an interface

你会发现你的自我限制这样做,如果这是来自并发包,如CopyOnWriteArrayList,并且你正在使用的方法如addIfAbsent这是List接口中未定义的方法。

因此,如果您返回的ArrayList或者未在合同(List接口)定义这个问题,你可以使用API​​的任何具体实现,但你是从具体实现量变到质变到别的(东西从ArrayListLinkedList限制),因为每个使用你的API的人都必须根据你的改变进行改变,所以我期望的太多了。

4

这意味着你不会为返回的对象调用不是List方法的ArrayList方法。

但是,如果对象是一个ArrayList,你可以做一个强制转换。

2

返回具体类的唯一原因可能是如果调用者需要了解具体的实现,或者可能需要了解具体实现的其他接口。例如,在Android中,您经常需要使用ArrayList,因为框架不知道如何正确序列化通用列表接口。

15

最好是返回适合您界面的最通用的类​​型。

如果出于某种原因,为什么ArrayList固有地适合您要返回的数据,那么您应该使用它。通常列表是不错,但你也可以考虑使用集合如果返回的值是固有无序:

Diagram of Java collections hierarchy

+2

+1的图片:) – 2012-04-26 07:14:09

+1

谢谢你的图 – 2012-04-26 09:05:29

相关问题