java - LinkedLists 的接口编程
问题描述
我最近被指出了这个问题(“编程到接口”是什么意思?)并想得到一些澄清。
LinkedList<Integer> test1 = new LinkedList<Integer>();
List<Integer> test2 = new LinkedList<Integer>();
根据我的阅读,第一个 LinkedList/List 决定了可以使用哪些方法。所以对于 test1,你可以做 test1.peek() 而你不能做 test2。那是因为对于 test2,您正在创建一个 LinkedList 但要实现 List 接口的方法?换句话说,对于 test2,您已经创建了一个带有 prev 和 next 节点的 LinkedList,但是选择实现 List 接口中列出的方法?
猜猜我有点困惑,因为我认为LinkedList是一个实现List接口的类,但是对于test2,我们正在创建一个LinkedList并再次实现一个List?
解决方案
LinkedList 实现 List;List 没有实现 LinkedList。
peek
是 a 的方法LinkedList
,但不是 的方法List
。
由于这种情况,test2.peek()
是编译时错误。
具体来说,test2 只公开了 List 的功能。
推荐阅读
- android - 如何在gridviewlayout中更改多个选择的图像边框?
- location - Gnome shell 扩展参数位置
- powershell - 按组织单位获取机器正常运行时间的 Powershell 脚本
- c# - 从 vb.net 调用 ac# 参数化函数
- arrays - bash循环中的数组在循环外不起作用
- angularjs - Angularjs UI路由器解析不起作用
- excel - 如果该行包含数字列表中的任何数字,如何将一行从一张纸复制到另一张纸?
- javascript - 如何提高 requestAnimationFrame 性能?
- sql - 具有特定状态的不同日子 - SQL Oracle
- sql - 数据库链接 - 无效的用户名/密码