このコードを実行しようとすると:
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;
}
}
}
私はこのエラーを受け取ります:
スレッド「メイン」の例外Java.lang.Error:未解決のコンパイル問題: TwoColor.main(TwoColor.Java:8)でタイプQueue をインスタンス化できません
クラスをインスタンス化できない理由がわかりません...それは私には正しいようです...
Java.util.Queue
はインターフェイスなので、直接インスタンス化することはできません。 LinkedList
などの具象サブクラスをインスタンス化できます。
Queue<T> q = new LinkedList<T>;
Queue はインターフェイスなので、直接開始することはできません。実装クラスの1つによって開始します。
ドキュメントから、すべての既知の実装クラス:
要件に基づいて上記のいずれかを使用して、Queueオブジェクトを開始できます。
キューはインターフェースクラスではありません。
使用できます
Queue thequeue = new linkedlist();
または
Queue thequeue = new Priorityqueue();
理由:キューはインターフェースです。そのため、具体的なサブクラスのみをインスタンス化できます。
インターフェイスをインスタンス化しようとしています。使用する具体的なクラス、つまりQueue<Edge> theQueue = new LinkedBlockingQueue<Edge>();
を指定する必要があります。