“无法实例化类型...”

2022-09-01 18:00:35

当我尝试运行此代码时:

import java.io.*;
import java.util.*;

public class TwoColor
{
    public static void main(String[] args) 
    {
         Queue<Edge> theQueue = new Queue<Edge>();
    }

    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;
        }
    }
}

我收到此错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Cannot instantiate the type Queue
    at TwoColor.main(TwoColor.java:8)

我不明白为什么我无法实例化类...这对我来说似乎是对的...


答案 1

java.util.Queue是一个接口,因此您无法直接实例化它。您可以实例化一个具体的子类,例如:LinkedList

Queue<T> q = new LinkedList<T>;

答案 2

队列是一个接口,因此您无法直接启动它。由其实现类之一启动它。

从文档中所有已知的实现类:

  • 摘要队列
  • 数组阻止队列
  • ArrayDeque
  • ConcurrentLinkedQueue
  • 延迟队列
  • LinkedBlockingDeque
  • 链接阻止队列
  • 链表
  • 优先级阻止队列
  • 优先级队列
  • 同步队列

您可以根据需要使用上述任何一项来启动 Queue 对象。


推荐