我有方法List<Foo> getFoos ()
从远程服务器获取数据并返回。
当然,用户不应该更改列表的项目数,因为他会得到与服务器上的数据不同步的数据(如果他想要更改项目数,他有特殊的方法,如 addFoo ()
)。
第一种方法是返回数组并将方法的签名更改为 Foo[] getFoos ()
.但它在java中更常见,用户操作集合更方便,所以我将签名更改为List<Foo> getFoos ()
.这个方法总是返回
Collections.unmodifiableList (originalList)
因此,当用户尝试更改列表时,他会得到 RuntimeException。
类似案例中的api设计有什么建议吗?
最佳答案
Collections.unmodifiableList
完全可以接受并且应该更快(无需创建数组)。
编辑 - 在 API 设计方面,您应该明确您的 JavaDoc!使用方法而不阅读其文档的人应该得到惊喜:p
关于java - 返回 unmodifiableList 是否可以接受,还是应该返回数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2186045/