2012-03-21 11 views
20

私はJavaのジェネリッククラスを持っていた場合... Java Genericsの<C>は<T>と等しいですか?

public class EntityStuff<C> extends AbstractPropertyStuff<C> implements Serializable { 

} 

これは同じです

...

public class EntityStuff<T> extends AbstractPropertyStuff<T> implements Serializable { 

} 

は手紙がどんな意味を保持していますか?

答えて

41

でありません、重要な意味はありません。

規則(Java Generics Tutorialを参照)があります

E - Element (used extensively by the Java Collections Framework) 
K - Key 
N - Number 
T - Type 
V - Value 
S, U, V etc. - 2nd, 3rd, 4th types 
10

まったく同じですが、文字は意味を持ちません。実際には、typeパラメータには任意の有効なJava識別子を使用できます。

EntityStuff<T> 
EntityStuff<t> 
EntityStuff<TTT> 
EntityStuff<ttt> 
EntityStuff<_t23> 

はすべて合法です。

3

CおよびTは単なる可変名です。 Javaキーワードであってはなりませんが、それ以外の場合はコンパイラにとって特別な意味はありません。

+0

これも他のクラス名と一致してはいけません。これが過去の混乱を引き起こしています... –

0

いいえ、文字は型パラメータの名前にすぎません。あなたが使っている文字は問題ではありません。実際、それは単なる手紙である必要はありません、あなたが望むならもっと長い名前を使うことができます。型パラメータに1文字を使用するのは単なる慣習です。

0

ません - typeパラメータの名前は意味

2

TまたはCタイプのパラメータのためだけの識別子であり、そのため、これらのステートメントは同じですが。

TResultまたはTModelTypeのような他の意味のある識別子を使用すると、より表現力豊かなものにすることができます。特に複数の型パラメータがある場合は、そうすることをお勧めします。

0

両方とも同じです。文字は単語にすることができますが、タイプにはTを使用し、キーにはKを、値などにはVを使用すると読みやすくなります。

関連する問題