“无法实例化类型……”
当我尝试运行此代码时:
import java.io.*; import java.util.*; public class TwoColor { public static void main(String[] args) { Queue theQueue = new Queue(); } public class Edge { //u and v are the vertices that make up this edge. private int u; private int v; //Constructor method public Edge(int newu, int newv) { u = newu; v = newv; } } }
我收到此错误:
线程“main”中的exceptionjava.lang.Error:未解决的编译问题: 无法实例化Queue类型 at TwoColor.main(TwoColor.java:8)
我不明白为什么我不能实例化这个课……对我来说似乎是对的……
java.util.Queue
是一个接口,因此您无法直接实例化它。 您可以实例化一个具体的子类,例如LinkedList
:
Queue q = new LinkedList ;
队列是一个接口,因此您无法直接启动它。 由其中一个实现类启动它。
从文档中所有已知的实现类:
- AbstractQueue
- ArrayBlockingQueue
- ArrayDeque
- 的ConcurrentLinkedQueue
- DelayQueue
- LinkedBlockingDeque
- 的LinkedBlockingQueue
- 链表
- 的PriorityBlockingQueue
- 的PriorityQueue
- 的SynchronousQueue
您可以根据您的要求使用上述任何一项来启动Queue对象。
队列是一个接口而不是一个类。
您正在尝试实例化一个接口,您需要提供您要使用的具体类,即Queue
。
您可以使用
Queue thequeue = new linkedlist();
要么
Queue thequeue = new Priorityqueue();
原因:队列是一个界面。 因此,您只能实例化其具体的子类。