2011-04-28 31 views
24

Cuando trato de ejecutar este código:"No se puede crear una instancia del tipo ..."

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; 
     } 
    } 
} 

me sale este error:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Cannot instantiate the type Queue 
    at TwoColor.main(TwoColor.java:8)

No entiendo por qué no puedo crear una instancia la clase ... Me parece correcto ...

+1

posible duplicado de [No se puede crear una instancia del tipo Lista ] (http://stackoverflow.com/questions/7960149/cannot-instantiate-the-type-listproduct) – Raedwald

Respuesta

43

java.util.Queue es una interfaz por lo que no puede crear una instancia directamente. Usted puede crear una instancia de una subclase concreta, como LinkedList:

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

¡Ah, gracias! – StickFigs

4

Queue es una interfaz No es una clase.

25

Queue es una interfaz de modo que no se puede iniciar directamente. Iniciarlo por una de sus clases de implementación.

A partir de los documentos de todas las clases de implementación conocidos:

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

Puede utilizar cualquiera de los anteriores basados ​​en su requisito para iniciar un objeto Queue.

3

Está tratando de crear una instancia de la interfaz, necesita dar la clase concreta que desea usar, es decir, Queue<Edge> theQueue = new LinkedBlockingQueue<Edge>();.

3

Puede utilizar

Queue thequeue = new linkedlist(); 

o

Queue thequeue = new Priorityqueue(); 

Motivo: Cola es una interfaz. Entonces puedes instanciar solo su subclase concreta.

Cuestiones relacionadas