是否可以返回unmodifiableList或者我应该返回数组?

Rom*_*man 19 java oop collections api-design

我有List<Foo> getFoos ()从远程服务器获取数据并返回它的方法.

当然,用户不应该更改列表中的项目数量,因为他将获得与服务器上的数据不同步的数据(并且如果他想要更改他具有特殊方法的项目数量addFoo ()).

第一种方法是返回数组和更改方法的签名Foo[] getFoos ().但它在java中更常见,用户使用集合操作更方便,所以我将签名更改为List<Foo> getFoos ().此方法始终返回

Collections.unmodifiableList (originalList)

因此,当用户尝试更改列表时,他将获得RuntimeException.

在类似案例中是否有关于api设计的建议?

deu*_*you 25

Collections.unmodifiableList 是完全可以接受的,应该更快(不需要创建数组).

编辑 - 在API设计方面,您应该清楚地了解JavaDoc!使用方法而不阅读其文档的人应该得到惊喜:p