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
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
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.
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.
Il vostro metodo sarebbe più flessibile quando dichiarate la collezione come 'Collection extends E>'. In questo modo potresti passare in raccolte di sottoclassi di E. – whiskeysierra