可能重复:
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语言的弱点,还是我在这里缺少什么概念?
由于
答案 0 :(得分:4)
这种情况正在发生,因为多态性在List类型中应用,而不是在其泛型中。
编辑1:迈克尔发布了一条有用链接的评论。
编辑2 :您可以(来自Why we can't do List<Parent> mylist = ArrayList<child>();):
List<? extends RuleDTO> list = yourEvaluationRuleDTOList;