2

可能重复:
为什么我们不能做 List<Parent> mylist = ArrayList<child>();

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

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

我的EvaluationRuleDTO extends from RuleDTO

所以从我的控制器我尝试执行以下操作:

service.saveRules(String paramOne, String paramTwo, List<EvaluationRuleDTO> rules).

但这是不允许的,因为它抱怨List<EvaluationRuleDTO> 规则不是List<RuleDTO> rules.

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

谢谢

4

1 回答 1

4

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

编辑 1:迈克尔发表了一条带有有用链接的评论。

编辑2:你可以做(​​从为什么我们不能做 List<Parent> mylist = ArrayList<child>();):

List<? extends RuleDTO> list = yourEvaluationRuleDTOList;
于 2012-07-23T22:33:26.330 回答