以下陈述似乎存在一些差异:
LinkedList<String> res = new LinkedList<>();
List<String> res = new LinkedList<>();
因为当我使用函数res.peek()
时,第二个语句会出错。它说无法找到res.peek()
。但第一个声明转向了正确。
有谁可以解释为什么会发生这种情况?
答案 0 :(得分:0)
LinkedList是类,它有方法peek(),当你使用List即接口时,它没有方法peek()。这就是为什么它会这样运作。
原因是父类或实现的接口没有其子类的属性。
1)LinkedList res = new LinkedList<>();
这里的引用变量是 LinkedList ,它具有peek()
方法。
2)List res = new LinkedList<>();
这里的参考变量是 List ,它没有peek()
方法。
希望这会有所帮助:)