“Cannot instantiate the type…”

前端 未结 6 2046
后悔当初
后悔当初 2021-01-03 19:44

When I try to run this code:

import java.io.*;
import java.util.*;

public class TwoColor
{
    public static void main(String[] args) 
    {
         Queue&         


        
相关标签:
6条回答
  • 2021-01-03 20:21

    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>();.

    0 讨论(0)
  • 2021-01-03 20:22

    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.

    0 讨论(0)
  • 2021-01-03 20:37

    Queue is an Interface not a class.

    0 讨论(0)
  • 2021-01-03 20:38

    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>;
    
    0 讨论(0)
  • 2021-01-03 20:39

    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:

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

    You can use any of above based on your requirement to initiate a Queue object.

    0 讨论(0)
  • 2021-01-03 20:39

    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>();
    
    0 讨论(0)
提交回复
热议问题