我有一個類Category
,它實現了接口CategoryManager
。接下來是Card
,它保持List<Category>
。返回接口對象列表
現在我想返回這個列表,但類別爲CategoryManager
,因此List<CategoryManager>
。我這樣做的原因是Category
的「公共接口」非常醜陋,我想通過向外部用戶顯示乾淨的CategoryManager
來縮小範圍。
我該怎麼做?
我想出下面的方法:
public <T extends CategoryManager> List<T> getAllCategories() {
return (List<T>) categories; //with categories beeing List<Category>
}
它的工作,但我覺得它比較難看,bacause我鑄造這裏返回List<T>
,從而失去信息和...嗯,我想你會覺得這不是很好,因爲各種原因。
任何人都可以得到一個更好/更好的解決方案?
Regards :-)
[Casting generic collection to base type]可能重複(http://stackoverflow.com/questions/539287/casting-a-generic-collection-to-base-type ) – 2011-05-02 19:10:09
@ Will A - 這是Java,而不是C#。 – 2011-05-02 19:11:11
@Justin - 好點,我的道歉 - 評論刪除。 – 2011-05-02 19:13:14