Ответ 1
java.util.Queue
- это интерфейс, поэтому вы не можете его напрямую создавать. Вы можете создать конкретный подкласс, например LinkedList
:
Queue<T> q = new LinkedList<T>;
Когда я пытаюсь запустить этот код:
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)
Я не понимаю, почему я не могу создать экземпляр класса... Мне кажется правильным...
java.util.Queue
- это интерфейс, поэтому вы не можете его напрямую создавать. Вы можете создать конкретный подкласс, например LinkedList
:
Queue<T> q = new LinkedList<T>;
Queue - это интерфейс, поэтому вы не можете инициировать его напрямую. Инициируйте его одним из его классов-исполнителей.
Из документов всех известных реализующих классов:
Вы можете использовать любой из вышеперечисленных основанных на своем требовании, чтобы инициировать объект Queue.
Очередь - это интерфейс, а не класс.
Вы пытаетесь создать экземпляр интерфейса, вам нужно указать конкретный класс, который вы хотите использовать, т.е. Queue<Edge> theQueue = new LinkedBlockingQueue<Edge>();
.
Вы можете использовать
Queue thequeue = new linkedlist();
или
Queue thequeue = new Priorityqueue();
Причина: Очередь - это интерфейс. Таким образом, вы можете создать экземпляр только своего конкретного подкласса.