《你知道的JavaScript》——混合对象类
Posted worldover
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《你知道的JavaScript》——混合对象类相关的知识,希望对你有一定的参考价值。
我今天的问题是关于这三个功能:
public void generateCalendarEvents(final String id,final Map<String,String> params);
public void generateCalendarEvents(Object object,final String id,final Map<String,String> params);
public void generateCalendarEvents(List<Identifiable> objets,final Map<String,String> params);// Identifiable is an Interface
根据上下文调用它们,例如:
generateCalendarEvents(someString,params); // params is a Map<String,String>
generateCalendarEvents(this,someString,params);
generateCalendarEvents(this.getDataList(),params); // getDataList return a list of objects implementing the "Identifiable" interface
2个开头的效果很好,但是我从第三个标题中得到了一个编译错误:
类型为AbstractController的generateCalendarEvents(String,Map)方法不适用于该参数
(列表,空)
我不明白为什么编译器无法将此调用与第三个函数相匹配...以及为什么当至少有人认为它可能会使List和Object混淆时才与第一个函数相混淆。
这可能是基本的,但我在这里看不到解决方案。
这里有什么主意吗?
提前致谢。
PS:显然,在这里,我可以简单地给这三种方法起一个不同的名字。我只是想对多态性进行更深入的研究。
最佳答案
真可惜.....问题不在于多态性。
但通常,明确指出的问题有助于找到解决方案。
所以问题出在我发送List 的方式上:我假设返回List的getDataList()方法将被转换为List 。
而且不是...所以解决问题的方法是:
List<Identifiable> rdvs = new ArrayList<Identifiable>();
rdvs.addAll(this.getDataList());
generateCalendarEvents(rdvs,new HashMap<String,String>());
这里的任何评论都是值得欢迎的...因为即使我设法使它起作用,但我也不完全确定为什么我不能采用以前的方法。
[人物存档]【HoneySelect2】【捏脸数据】人物鉴赏
点击下载(谷歌云盘):http://raboninco.com/19ARW
点击下载(谷歌云盘):http://raboninco.com/19ASk
以上是关于《你知道的JavaScript》——混合对象类的主要内容,如果未能解决你的问题,请参考以下文章
你知道 JavaScript 中的 Arguments 对象都有哪些用途吗?
你需要知道的 JavaScript 类(class)的这些知识
原生JavaScript实现对象的混合与克隆效果,带完整版解析代码[helpers.js]