Подтвердить что ты не робот

"Невозможно создать экземпляр типа..."

Когда я пытаюсь запустить этот код:

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)

Я не понимаю, почему я не могу создать экземпляр класса... Мне кажется правильным...

4b9b3361

Ответ 1

java.util.Queue - это интерфейс, поэтому вы не можете его напрямую создавать. Вы можете создать конкретный подкласс, например LinkedList:

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

Ответ 2

Queue - это интерфейс, поэтому вы не можете инициировать его напрямую. Инициируйте его одним из его классов-исполнителей.

Из документов всех известных реализующих классов:

  • AbstractQueue
  • ArrayBlockingQueue
  • ArrayDeque
  • ConcurrentLinkedQueue
  • DelayQueue
  • LinkedBlockingDeque
  • LinkedBlockingQueue
  • LinkedList
  • PriorityBlockingQueue
  • PriorityQueue
  • SynchronousQueue

Вы можете использовать любой из вышеперечисленных основанных на своем требовании, чтобы инициировать объект Queue.

Ответ 3

Очередь - это интерфейс, а не класс.

Ответ 4

Вы пытаетесь создать экземпляр интерфейса, вам нужно указать конкретный класс, который вы хотите использовать, т.е. Queue<Edge> theQueue = new LinkedBlockingQueue<Edge>();.

Ответ 5

Вы можете использовать

Queue thequeue = new linkedlist();

или

Queue thequeue = new Priorityqueue();

Причина: Очередь - это интерфейс. Таким образом, вы можете создать экземпляр только своего конкретного подкласса.