When I try to run this code:
import java.io.*;
import java.util.*;
public class TwoColor
{
public static void main(String[] args)
{
Queue&
You are trying to instantiate an interface, you need to give the concrete class that you want to use i.e. Queue<Edge> theQueue = new LinkedBlockingQueue<Edge>();
.
You can use
Queue thequeue = new linkedlist();
or
Queue thequeue = new Priorityqueue();
Reason: Queue is an interface. So you can instantiate only its concrete subclass.
Queue is an Interface not a class.
java.util.Queue
is an interface so you cannot instantiate it directly. You can instantiate a concrete subclass, such as LinkedList
:
Queue<T> q = new LinkedList<T>;
Queue is an Interface so you can not initiate it directly. Initiate it by one of its implementing classes.
From the docs all known implementing classes:
You can use any of above based on your requirement to initiate a Queue object.
I had the very same issue, not being able to instantiate the type of a class which I was absolutely sure was not abstract. Turns out I was implementing an abstract class from Java.util
instead of implementing my own class.
So if the previous answers did not help you, please check that you import
the class you actually wanted to import, and not something else with the same name that you IDE might have hinted you.
For example, if you were trying to instantiate the class Queue from the package myCollections which you coded yourself :
import java.util.*; // replace this line
import myCollections.Queue; // by this line
Queue<Edge> theQueue = new Queue<Edge>();