2010-08-13 17 views
5

Sto solo leggendo la raccolta di tutorial java e mi chiedo perché è necessario lo <E> dopo la statica?Cosa è statico <E>?

 

public static<E> Set<E> removeDups(Collection<E> c) { 
    return new LinkedHashSet(c); 
} 


Grazie, Sarah

+0

Il vostro metodo sarebbe più flessibile quando dichiarate la collezione come 'Collection '. In questo modo potresti passare in raccolte di sottoclassi di E. – whiskeysierra

risposta

8

Per la leggibilità, di solito c'è uno spazio tra il nome del parametro statico e quello generico. static dichiara il metodo come statico, cioè non è necessaria alcuna istanza per chiamarlo. Il <E> dichiara che esiste un parametro generico illimitato chiamato E che viene utilizzato per parametrizzare gli argomenti del metodo e/o il valore restituito. Qui, è utilizzato sia nel tipo di ritorno, Set<E> per dichiarare il metodo restituisce un insieme di E, e nel parametro, Collection<E> indicando che il metodo richiede un insieme di E.

Il tipo di E non è specificato, solo che il valore restituito e il parametro metodo devono essere parametrizzati genericamente con lo stesso tipo. Il compilatore determina il tipo effettivo quando viene chiamato il metodo. Ad esempio,

Collection<String> myStrings = new ArrayList<String>(); 
    .. add strings 
    Set<String> uniqueStrings = SomeClass.removeDups(myStrings); 

Se si tenta di utilizzare diversi tipi parametrici per le due collezioni, come ad esempio

Set<Integer> uniqueStrings = SomeClass.removeDups(myStrings); 

questo genererà un errore di compilazione, in quanto i parametri generici non corrispondono.

2

Il <E> è il modo di dichiarare che questo è un metodo generico una funzionalità introdotta con Generics in Java 5.0

Vedere here per ulteriori dettagli sul suo utilizzo e logica.