如果fooService.getFoos()返回List<Foo>

那么你可以这样写:

List<Foo> fooList = fooService.getFoos();


或这个:

List<Foo> fooList = new ArrayList(fooService.getFoos());


这两种方法之间的结果fooList是否有显着差异?

最佳答案

是的-您正在创建一个全新的List,其中包含原始元素。您正在复制内存中的集合,并从头到尾进行迭代。您也没有使用服务提供的实例,也无法修改原始实例。最后,您在第二个片段中省略了泛型声明。

因此,使用第一个选项。

更新:您表示不允许修改原始列表。这实际上是fooService的问题,而不是其客户的问题。如果该服务也由您控制,则返回Collections.unmodifiableList(originalList)-这样客户端将无法执行修改操作(尝试时将引发异常)

09-06 21:46