2011-12-13 10 views
5

cosa è il modo migliore:Come creare un'istanza di una raccolta in Java utilizzando Generics?

Set<String> myStringSet = new HashSet(); 

O

Set<String> myStringSet = new HashSet<String>(); 

Nessuno dei precedenti?

Ha importanza?

+0

Controllare questa domanda e risposta accettata: http://stackoverflow.com/questions/4166966/what-is-the-point-of-the-diamond-operator-in-java-7 –

+2

In Java SE 7 (DISPONIBILE ORA!) 'Set myStringSet = new HashSet <>();' –

risposta

5

Quest'ultimo:

Set<String> myStringSet = new HashSet<String>(); 

Vedi the Java documentation on generic types per ulteriori informazioni.

+1

Basta iniziare a usare la versione non tipizzata ... quando realizzi tutti i lanci fastidiosi che devi fare, inizierai a utilizzare le raccolte tipizzate ! –

3

Si dovrebbe sempre inizializzare collezione tipo generico

Set<String> myStringSet = new HashSet<String>(); 

In caso contrario si otterrà un messaggio di avviso

Type safety: The expression of type HashSet needs unchecked conversion 
to conform to Set <String>. 
0

Il secondo è il modo migliore e più sicuro per procedere.

Set<String> myStringSet = new HashSet(); compila e fornisce un avviso ...uses unchecked or unsafe operations.. Questo si presenta in Java 5 e versioni successive, se si utilizzano raccolte senza identificatori di tipi generici (HashSet() anziché HashSet<String>()).

L'omissione dello specificatore di tipo generico disabiliterà il compilatore dal controllare che si stia utilizzando lo HashSet in modo sicuro, utilizzando i generici.