2012-03-21 8 views
20

Si tuviera una clase genérica de Java ...Java Generics, ¿es <C> igual a <T>?

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

} 

¿Es esto lo mismo que ...

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

} 

qué la letra a cabo ninguna importancia?

Respuesta

41

No, no hay ningún significado.

Hay convenciones (véase 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

Es exactamente lo mismo, la letra no tiene ningún significado. De hecho, el parámetro de tipo puede ser cualquier identificador Java válido, por lo que:

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

son todos legales.

3

C y T son solo nombres de variables. No deberían ser palabras clave de Java, pero, de lo contrario, no tienen ningún significado especial para el compilador.

+0

Tampoco deben coincidir con otros nombres de clase; esto ha causado cierta confusión en el pasado ... –

0

No, la letra es solo el nombre del parámetro de tipo. No importa qué letra use. De hecho, no tiene que ser solo una letra, podría usar un nombre más largo si lo desea; usar una sola letra para los parámetros de tipo es solo una convención.

0

No - el nombre del parámetro de tipo no es de importancia

2

El T o C es sólo el identificador para el parámetro de tipo, por lo que dichos estados son los mismos.

Puede utilizar otros identificadores más significativos como TResult o TModelType para hacerlo más expresivo y, de hecho, le recomiendo que lo haga, especialmente si tiene más de un parámetro de tipo.

0

Lo mismo. La letra puede ser una palabra, pero encontrará que usar T para tipo y K para clave y V para valor (etc.) facilita la lectura.

Cuestiones relacionadas