声明一个列表,实现为LinkedList,不能使用getLast()方法

时间:2018-08-15 05:31:17

标签: casting

我试图创建如下所示的链表

List<Integer> list = new LinkedList<>();
int i = list.getLast();

但是当我使用LinkedList类中的getLast()方法时,它报告“找不到符号“方法getLast()””。

似乎,由于getLast()仅存在于LinkedList类中,并且我将list声明为List,所以将其转换为更通用的形式并失去了一些功能。

但是我很好奇Java如何找到方法名称?由于我将其实例化为LinkedList,因此无法在实例化的类中找到此方法? 有什么我可以阅读的文件

1 个答案:

答案 0 :(得分:1)

问题是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<>();