誰かがこのコードのしていることを説明することができますか、私はjavaを初めて使用しています。 Javaでのジェネリックの理解
Queue <TreeNode> queue = new LinkedList<TreeNode>();
が、私はこのコードがタイプ
TreeNode
のある変数名
queue
とキューを作成すると信じて、右側が何を意味するのでしょうか?キューをタイプ
TreeNode
のリンクリストに割り当てるかどうか
誰かがこのコードのしていることを説明することができますか、私はjavaを初めて使用しています。 Javaでのジェネリックの理解
Queue <TreeNode> queue = new LinkedList<TreeNode>();
が、私はこのコードがタイプ
TreeNode
のある変数名
queue
とキューを作成すると信じて、右側が何を意味するのでしょうか?キューをタイプ
TreeNode
のリンクリストに割り当てるかどうか
クラスjava.util.Queue
は、タイプパラメータを使用して、作成されたタイプ以外のタイプを追加しないことを保証します。
あなたのようQueue
を作成する場合:
Queue <TreeNode> queue = new LinkedList<TreeNode>();
それはqueue
だけTreeNode
オブジェクトを格納できることを意味します。これはメソッドadd,offer,remove,poll
の型チェックに使用されます。
Genericでは、DataStructureに格納される参照のタイプを指定できます。あなたの例では、ListはtreeNode型の変数になります。
ただし、クラスなどの独自のユーザー定義型を含め、任意の型を格納できます。
リストには変数が含まれていないため、参照が含まれています。 –
保存するタイプの参照 – Archmede
以下のリンクでは、ジェネリックがJavaでどのようなものであり、なぜそれらが使用されるのかについて説明しています。
https://docs.oracle.com/javase/tutorial/java/generics/why.html
我々は、オブジェクトの型の安全性を確認してくださいジェネリックを使用することによって。あなたの質問
Queue <TreeNode> queue = new LinkedList<TreeNode>();
あなたはジェネリック型 "のTreeNode" でキューを作成しているで
。したがって、 "TreeNode"クラスをインスタンス化するオブジェクトのみが許可されます。
はい、このことを理解するには、Javaのジェネリックスをほとんど理解していないといけません。ジェネリックスは、JavaとJavaのコレクションフレームワークの非常に重要な機能は、完全な形式でこの機能を使用しています。あなたの声明を以下に記しておきます。
ここで注目すべき最初のことは、ほぼすべてのコレクションクラスとインターフェイスが本質的に一般的であることです。つまり、彼らは彼らの中に任意のタイプのデータを格納することができます。以下の例を参照してください。
List list = new ArrayList();
String sObj = "stringObj";
Integer iObj = 1;
MainTest classObj = new MainTest();
list.add(sObj); //Storing string
list.add(iObj); // Stroing int
list.add(classObj); //Storing class object
ここでは、私がArrayListを作成し、List参照変数で参照していることがわかります。ここでは、私はここでどのクラスでもmetionedしていないことに気づくことができますので、デフォルトではすべてのオブジェクトタイプのオブジェクトが保存されます。これで、コレクションにTreeaNodeというオブジェクトの1つのタイプのみを格納するようにコレクションを制限していることを示しています。他のタイプのオブジェクトがコレクションに追加されるようになりました。左側のステートメントでは、という名前の参照変数を作成します。データ型がQueue of TreeNodeのキューを作成し、右側にTreeNodeオブジェクトintのみを格納できるLinkedListのオブジェクトをの参照変数参照変数に割り当てます。つまり、キューにTreeNodeを除くオブジェクトを追加することはできません。この割り当ては、QueueクラスとLinkedListクラスの両方でCollectionインタフェースを実装することができます。
[Javaでジェネリックアレイを作成するにはどうすればいいですか?](http://stackoverflow.com/questions/529085/how-to-create-a-generic-array-in-java) – Nemus
はい。 'LinkedList'は待ち行列です。 [java.util.LinkedList](https://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html) – Obicere
@Nemusここではほとんど適用されません。 – Obicere