2013-07-15 36 views
0

我有一個Restful Web服務,我正在寫。它是使用getResultList的數據庫表的簡單轉儲。該EJB調用看起來是這樣的 -從我的Restful Web Service返回java.util.List或java.util.Collection是否更好?

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

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

RESTful Web服務可能返回這是因爲多數民衆贊成它是走出getResultList的一個java.util.List。但是,將它作爲java.util.Collection返回是一種更好的做法,因爲它更通用?

+2

我強烈要求自己做一些測試並得到答案,但對於這種情況,我建議使用'List'來代替。 –

+2

命令是否重要?如果是,則使用'List',否則使用'Collection'。 (如果你不需要'size',甚至可以使用'Iterable'。) –

+0

我同意Luiggi,但它也取決於你的JSON/XML /其他生成器。生成器可能未被設置爲序列化集合以及列表。 –

回答

2

一般來說,使用List將宣佈排序很重要。因此,使用Collection傳達你的意圖更清楚(因爲你沒有排序)。

也就是說,很多程序員只是在這種情況下使用List。此外,如果您將來可能添加訂購,現在使用List可能會更好。因此,我認爲t.b.h也可以。

至於Iterable,我不會使用它,因爲它不太常用,並且會讓人困惑,除非底層的東西是生成器(懶惰地根據請求加載值)。

+0

謝謝大家的回答/評論 – spartikus

0

這確實取決於要求。如果你想讓實現更通用,並且如果你不確定在哪裏可以使用,那麼更好使用CollectionPlease find why?

-1

除非有正當理由使用超類型,否則應始終使用子類型。爲什麼?因爲確切地傳達您的API客戶端應該期望的結果非常重要。通過使用正確的設計儘可能地清除歧義。

+0

如果遵循這個建議,它將意味着返回ArrayList或LinkedList,這幾乎總是一個壞主意。 '正確的設計'引發了這個問題。 -1 – EJP

相關問題