"Impossible d'instancier le type…"
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 in thread "main" java.lang.Error: Unresolved compilation problem: Cannot instantiate the type Queue at TwoColor.main(TwoColor.java:8)
Je ne comprends pas pourquoi je ne peux pas instancier la classe... Il me semble bon pour moi...
5 réponses
java.util.Queue
est une interface de sorte que vous ne pouvez pas l'instancier directement. Vous pouvez instancier une sous-classe concrète, telle que LinkedList
:
Queue<T> q = new LinkedList<T>;
File d'attente est une Interface de sorte que vous ne pouvez pas l'initier directement. Initiez-le par l'une de ses classes d'implémentation.
À partir des documents toutes les classes d'implémentation connues:
- AbstractQueue
- ArrayBlockingQueue
- ArrayDeque
- ConcurrentLinkedQueue
- DelayQueue
- LinkedBlockingDeque
- LinkedBlockingQueue
- LinkedList
- PriorityBlockingQueue
- PriorityQueue
- Synchronequeue
Vous pouvez utiliser l'un des éléments ci-dessus en fonction de vos besoins pour lancer un objet File d'attente.
Vous essayez d'instancier une interface, vous devez donner le béton de classe que vous souhaitez utiliser c'est à dire Queue<Edge> theQueue = new LinkedBlockingQueue<Edge>();
.
Vous pouvez utiliser
Queue thequeue = new linkedlist();
Ou
Queue thequeue = new Priorityqueue();
Raison: la file D'attente est une interface. Vous pouvez donc instancier uniquement sa sous-classe concrète.