casting - 声明了一个 List,实现为 LinkedList,不能使用 getLast() 方法
问题描述
我试图创建一个如下所示的链表
List<Integer> list = new LinkedList<>();
int i = list.getLast();
但是当我使用 LinkedList 类的 getLast() 方法时,它报告“找不到符号”方法 getLast()“”。
看来,由于 getLast() 仅存在于 LinkedList 类中,并且我将 list 声明为 List,因此我将其转换为更通用的形式并丢失了一些功能。
但是我很好奇Java是如何找到方法名的?由于我将它实例化为LinkedList,它不能在实例化类中找到这个方法吗?有没有我可以阅读的文件
解决方案
问题是List
接口没有公开getLast()
方法,这是特定于实现的LinkedList
。您在这里有几个选择。如果你想声明你List
的,那么你可以在调用之前转换链表变量getLast()
:
List<Integer> list = new LinkedList<>();
list.add(1);
int i = ((LinkedList<Integer>)list).getLast(); // but make sure it's a linked list
另一种选择是将您的列表声明为链表:
LinkedList<Integer> list = new LinkedList<>();
推荐阅读
- r - csv中有字符时如何使用R填充
- c# - 如何在循环通过json数据时从jToken中获取值
- concourse - Spinnaker hal config ci concourse master add mymaster --read-permissions=[] --write-permissions=[] 提供值
- python-3.x - 尝试更新 python / anaconda 时出错
- php - 为什么我的 php 不回显数据库中的所有内容?
- identityserver4 - Identity Server 4:如何仅为 UserInfoEndpoint 添加自定义声明并在 AccessToken 中排除它们?
- coyote - 什么是 Coyote 框架,我可以在哪里阅读有关它的更多信息?
- function - 我可以将参数作为数组传递吗?
- html - 当屏幕改变大小时,无法使边框保持静态
- android - Android DatePicker 不会滚动超过 2100 年