我有一个类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