关于oop:Java:多态和调用方法

Java: Polymorphism and invoking methods

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Why we can't do List mylist = ArrayList();

我有一个关于多态性和调用方法的问题。

我的服务层签名是public void saveRules(String paramOne, String paramTwo, List rules)

我的EvaluationRuleDTO extends from RuleDTO

因此,我尝试从控制器执行以下操作:

service.saveRules(String paramOne, String paramTwo, List rules)

但这是不允许的,因为它抱怨List规则不是List rules规则。

这对我来说没什么意义。这是Java语言的弱点,还是我缺少什么概念?

谢谢


这是因为多态性应用于列表类型,而不是其泛型。

编辑1:迈克尔发表了一篇评论,其中有一个有用的链接。

编辑2:你可以做(从为什么我们不能做listmylist=arraylist();):

1
List<? extends RuleDTO> list = yourEvaluationRuleDTOList;