码迷,mamicode.com
首页 > 编程语言 > 详细

《你知道的JavaScript》——混合对象类

时间:2020-06-27 20:00:55      阅读:68      评论:0      收藏:0      [点我收藏+]

标签:ext   rate   class   style   tar   shm   不能   类型   作用   

我今天的问题是关于这三个功能:

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》——混合对象类

标签:ext   rate   class   style   tar   shm   不能   类型   作用   

原文地址:https://www.cnblogs.com/worldover/p/13199419.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!