Java:多态和调用方法

时间:2012-07-23 22:30:45

标签: java oop

  

可能重复:
  Why we can't do 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&gt;规则不是List<RuleDTO> rules

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

由于

1 个答案:

答案 0 :(得分:4)

这种情况正在发生,因为多态性在List类型中应用,而不是在其泛型中。

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

编辑2 :您可以(来自Why we can't do List<Parent> mylist = ArrayList<child>();):

List<? extends RuleDTO> list = yourEvaluationRuleDTOList;