2012-03-21 12 views
20

Se avessi una classe generica Java di ...Java Generics, è <C> uguale a <T>?

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

} 

È questo lo stesso ...

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

} 

fa la lettera di tenere qualche significato?

risposta

41

No, non c'è alcun significato.

ci sono convenzioni (vedi 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

È esattamente la stessa cosa, la lettera non ha alcun significato. Infatti, il parametro type può essere qualsiasi identificativo Java valido, quindi:

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

sono tutti legali.

3

C e T sono solo nomi variabili. Non dovrebbero essere parole chiave Java, ma in caso contrario, non hanno alcun significato speciale per il compilatore.

+0

Inoltre, non devono corrispondere agli altri nomi di classe, ciò ha causato qualche confusione in passato ... –

0

No, la lettera è solo il nome del parametro type. Non importa quale lettera usi. In realtà, non deve essere solo una singola lettera, puoi usare un nome più lungo se vuoi; usare una singola lettera per i parametri di tipo è solo una convenzione.

0

No - il nome del parametro di tipo non ha alcun significato

2

Il T o C è solo l'identificatore per il parametro di tipo, e così quelle dichiarazioni sono gli stessi.

È possibile utilizzare altri identificativi più significativi come TResult o TModelType per renderlo più espressivo e in effetti vorrei incoraggiarvi a farlo, soprattutto se si dispone di più di un parametro di tipo.

0

Entrambi uguali. La lettera può essere una parola, ma troverete che usare T per tipo e K per tasto e V per valore (ecc.) Rende più facile la lettura.

Problemi correlati