为什么是List list = new ArrayList(),而不直接用ArrayList
如题,安卓新手,经常看到这样的写法 不知道为什么
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如题,安卓新手,经常看到这样的写法 不知道为什么
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
ArrayList与LinkedList实现了List接口中定义的通用方法,
但是根据自己的需要也实现了一些List中没有定义的方法。
我需要一个实现了List接口的实现类对象。
具体是哪种实现,我们并不关心。
因为List接口中定义的方法足够我们使用。
这时,这种定义方式,就会发生向上转型。
由具体类型向上转为通用的接口类型。
但是,伴随向上转型时会发生信息丢失,也就是说,
你拿到的这个对象中仅仅只能访问到List接口中定义的成员方法,
而具体实现类新增的扩展方法将会丢失。
在通用接口提供的内容足以满足当前需求时,就可以向你题目中描述的那样定义。十分方便。
编辑器太难用了。凑合看吧。。
面向接口编程思想。
首先,面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于其一部分。或者说,它是面向对象编程体系中的思想精髓之一。
讲的不是很好,建议参考一下:http://dev.yesky.com/298/8080298.shtml
因为你不需要用到ArrayList自带的一些方法,你只需要用List这种容器所应该带的方法,如果你发现ArrayList在你的应用中不适合,完全可以在定义处另定义实现了List接口的类。