“无法实例化类型……”

当我尝试运行此代码时:

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 theQueue = new LinkedBlockingQueue();

您可以使用

 Queue thequeue = new linkedlist(); 

要么

 Queue thequeue = new Priorityqueue(); 

原因:队列是一个界面。 因此,您只能实例化其具体的子类。