When I try:
Queue<Integer> q = new Queue<Integer>();
The compiler is giving me an error. Any help?
Also, if I want to initialize a queue do I have to implement the methods of the queue?
Advertisement
Answer
A Queue
is an interface, which means you cannot construct a Queue
directly.
The best option is to construct off a class that already implements the Queue
interface, like one of the following: AbstractQueue
, ArrayBlockingQueue
, ArrayDeque
, ConcurrentLinkedQueue
, DelayQueue
, LinkedBlockingQueue
, LinkedList
, PriorityBlockingQueue
, PriorityQueue
, or SynchronousQueue
.
An alternative is to write your own class which implements the necessary Queue interface. It is not needed except in those rare cases where you wish to do something special while providing the rest of your program with a Queue
.
public class MyQueue<T extends Tree> implements Queue<T> { public T element() { ... your code to return an element goes here ... } public boolean offer(T element) { ... your code to accept a submission offer goes here ... } ... etc ... }
An even less used alternative is to construct an anonymous class that implements Queue
. You probably don’t want to do this, but it’s listed as an option for the sake of covering all the bases.
new Queue<Tree>() { public Tree element() { ... }; public boolean offer(Tree element) { ... }; ... };