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语言的弱点,还是我缺少什么概念?
谢谢
- 如果你阅读了这个链接,很明显这不是Java中的弱点。
这是因为多态性应用于列表类型,而不是其泛型。
编辑1:迈克尔发表了一篇评论,其中有一个有用的链接。
编辑2:你可以做(从为什么我们不能做listmylist=arraylist();):
1
| List<? extends RuleDTO> list = yourEvaluationRuleDTOList; |
- 好吧,我现在明白了,说得通。那么对于我的问题有什么好的解决办法呢?我想用仿制药,但我不是百分之百肯定
- @我用链接中的提示补充了我的帖子。
- 现在我得到这个错误:方法saverules(string,string,list)不适用于参数(string,string,list)
- 像这样定义方法,然后使用原始的List参数:public void saveRules(String paramOne, String paramTwo, List rules)。
- 太好了,现在可以了,对我来说也很有意义。谢谢大家