Lorsque j'essaie d'exécuter ce 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;
}
}
}
Je reçois cette erreur:
Exception dans le thread "principal" Java.lang.Error: problème de compilation non résolu: Impossible d'instancier le type Queue Sur TwoColor.main (TwoColor.Java:8)
Je ne comprends pas pourquoi je ne peux pas instancier la classe ... Cela me semble juste ...
Java.util.Queue
est une interface, vous ne pouvez donc pas l'instancier directement. Vous pouvez instancier une sous-classe concrète, telle que LinkedList
:
Queue<T> q = new LinkedList<T>;
Queue est une interface, vous ne pouvez donc pas l'initier directement. Initiez-le par l'une de ses classes d'implémentation.
À partir de la documentation, toutes les classes d'implémentation connues:
Vous pouvez utiliser l'une des méthodes ci-dessus en fonction de vos besoins pour lancer un objet Queue.
La file d'attente est une Interface pas une classe.
Vous pouvez utiliser
Queue thequeue = new linkedlist();
ou
Queue thequeue = new Priorityqueue();
Raison: la file d'attente est une interface. Vous ne pouvez donc instancier que sa sous-classe concrète.
Vous essayez d'instancier une interface, vous devez donner la classe concrète que vous souhaitez utiliser, c'est-à-dire Queue<Edge> theQueue = new LinkedBlockingQueue<Edge>();
.