2016-03-31 15 views
0

ジェネリックスTとEの主な違いは何ですか?T型の変数を返すメソッドがあり、ArrayListを作成する別のメソッドがあります。私の他の質問は:ArrayListに要素を追加するときに変数を(E)にキャストするだけで安全ですか?の違いと<E>

//これは、ノードクラスに

public T getData(); 
+1

文脈なしでは、これは確実に答えることができません。 TとEはちょうどタイプを表します。それらに境界が付いていない場合はすべての型。それはおそらく安全ではありません。 – Carcigenicate

答えて

2

を発見された前順走査で

public ArrayList<E> getPreorderTraversal() 

}

を、ツリー内のすべての要素を格納するArrayListを返します。一般的に、違いはありませんTとEの間では、型パラメータ(EまたはT)に異なる名前を使用しているだけです。

最も一般的に使用されるタイプのパラメータ名は次のとおりです。

E - Element (used extensively by the Java Collections Framework) 
K - Key 
N - Number 
T - Type 
V - Value 

まあ、それは全体の文脈を知らなくてもEに変数をキャストすることをお勧めしません。

私はあなたがBSTのコードを書く場合、あなたソリューションはので、ノードリストは、それが型Tのリストを含めることはできません型TまたはE.のいずれかである

public E getData(); 

または

public ArrayList<T> getPreorderTraversal() 

ようにする必要がありますと仮定逆にEを返します。

+0

上記の規則は、キャストする必要があるかどうかを知るために使用すべきではないことに注意してください。何が何かを確実に知らなければ、あなたはそれを投げるべきではありません。 – Carcigenicate

+0

ああ私はそれを取得!、よく私はバイナリ検索ツリーをしようとしているので、そのノード内のデータを返すメソッドを持つノードクラスがあります。しかし、ArrayList を作成するメソッドに問題があります。これは、パラメータを取ることなく、あらかじめオーバトラバーサルでトラバースしています。 –

+0

コードを共有できれば助けが簡単になります。 –

関連する問題