1

我正在编写一个 Restful Web 服务。它是使用 getResultList 的数据库表的简单转储。EJB 调用如下所示 -

Query query = em.createQuery("SELECT e FROM Todo e");

List<Todo> ret = (List<Todo>) query.getResultList();
return ret;

Restful Web 服务可以将其作为 java.util.List 返回,因为它是从 getResultList 中产生的。但是,将它作为 java.util.Collection 返回是否是更好的做法,因为它更通用?

4

3 回答 3

4

通常,使用List遗嘱会宣布排序很重要。因此,使用Collection可以更清楚地传达您的意图(因为您没有订单)。

也就是说,许多程序员只是List在这种情况下使用。此外,如果您将来可能添加排序,使用Listnow 可能会更好。因此,我认为两者都可以。

至于Iterable,我不会使用它,因为它不太常用并且会使人们感到困惑,除非底层的东西是生成器(根据请求延迟加载值)。

于 2013-07-15T21:50:50.027 回答
0

这真的取决于要求。如果您想让实现更通用,并且如果您不确定可以在哪里使用,Collection则更建议使用。 请找出原因?

于 2013-07-15T21:41:31.100 回答
-1

您应该始终使用子类型,除非有使用超类型的正当理由。为什么?因为准确地传达您的 API 客户端应该期望的结果非常重要。通过使用正确的设计尽可能地消除歧义。

于 2013-07-15T22:52:50.960 回答