I tre sono in qualche modo equivalente:
List<String> list = new ArrayList<>();
In quanto sopra, si sta dichiarando una variabile che implementa l'interfaccia List
che conterrà String
elementi, e un'istanza con la classe concreta ArrayList
. Inoltre, stai usando la nuova sintassi del diamante di Java 7, figlio che non devi scrivere di nuovo String
tra <>
.
ArrayList<String> list = new ArrayList<String>();
In quanto sopra, il gioco è dichiarazione di una variabile della classe concreta ArrayList
che conterrà String
elementi, e un'istanza con la classe concreta ArrayList
utilizzando la sintassi "tradizionale" che impone che si specifica il tipo String
tra <>
.
ArrayList<String> list = new ArrayList<>();
In quanto sopra, il gioco è dichiarazione di una variabile della classe concreta ArrayList
che conterrà String
elementi, e un'istanza con la classe concreta ArrayList
. Inoltre, stai usando la nuova sintassi del diamante di Java 7, figlio che non devi scrivere di nuovo String
tra <>
.
Si noti che la sintassi del diamante (<>
) funzionerà solo in Java 7 e versioni successive, per le versioni precedenti di Java si è bloccati utilizzando la sintassi tradizionale (<the-type>
) per creare istanze generiche.
Le ultime due forme sono completamente equivalenti; il primo modulo è leggermente diverso dal momento che stai specificando che la variabile list
è di tipo List
e non di tipo ArrayList
- e questa è la forma preferita, dal momento che le buone pratiche orientate agli oggetti richiedono che tu debba program to an 'interface', not an 'implementation'.
fonte
2012-01-15 14:11:44