When I try to run this code:
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;
}
}
}
I get this error:
Exception in thread "main" java.lang.Error: Unresolved compilation problem: Cannot instantiate the type Queue at TwoColor.main(TwoColor.java:8)
I don't understand why I can't instantiate the class... It seems right to me...
java.util.Queue
is an interface so you cannot instantiate it directly. You can instantiate a concrete subclass, such asLinkedList
:You can use
or
Reason: Queue is an interface. So you can instantiate only its concrete subclass.
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>();
.Queue is an Interface not a class.
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.