List<Student> studentQueue = new LinkedList<>();
public void add(Student s){
studenQueue.add(s);
studentQueue.peek(); //Here i'm not getting a peek method as listed in the java API
}
正如您所看到的peek方法,它被定义为oracle网站上指定的Java API中的有效方法。但是当我尝试在实践中使用该方法时,我的IDE无法找到该方法。
答案 0 :(得分:2)
studentQueue
的类型为List<Student>
,
并且List
界面没有peek
方法。
如果您需要访问LinkedList
的方法,请将其类型声明为:
LinkedList<Student> studentQueue = new LinkedList<>();
为了记录,在实践中,您需要依赖特定实现的方法是很少见的。更高级别的设计可能更依赖于更一般的List<T>
界面(甚至Collection<T>
或Iterable<T>
),这更为常见。然后,您声明程序其余部分所需的最通用接口,例如List
,并选择适当的实现,例如LinkedList
或ArrayList
。
简而言之,如果studentQueue
的用户确实需要LinkedList
的方法,则声明为LinkedList
,否则请坚持更通用的接口List
。
答案 1 :(得分:1)
可用的方法基于变量的声明类型(在您的情况下为List
)。
要使用peek方法访问,您必须将变量的类型更改为LinkedList
答案 2 :(得分:1)
它不起作用,因为您的引用变量是List类型。如果您看到List Interface的文档,您会发现没有peek()方法。
如果将引用变量的类型更改为LinkedList,它将起作用。