Si riceve l'avviso perché ArrayList
fa parte di java generics. Essenzialmente, è un modo per catturare gli errori di tipo in fase di compilazione. Ad esempio, se dichiari la tua lista di array con tipi Integer (ArrrayList<Integer>
) e poi provi ad aggiungere stringhe, otterrai un errore in fase di compilazione - evitando brutti crash in fase di runtime.
La prima sintassi è lì per compatibilità con le versioni precedenti e dovrebbe essere evitata quando possibile (si noti che i generici non erano presenti nelle versioni precedenti di java).
Secondo e terzo esempio sono praticamente equivalenti. Poiché è necessario passare un oggetto e non un tipo primitivo al metodo add
, lo 3
viene convertito internamente in Integer(3)
. Scrivendo una stringa tra virgolette, si crea effettivamente un oggetto String
. Quando si chiama String("ss")
si sta creando un nuovo oggetto String
con valore uguale al parametro ("ss").
A meno che non sia necessario memorizzare tipi diversi nel proprio Elenco, suggerirei effettivamente di utilizzare una dichiarazione di tipo corretta, ad es. ArrayList<Integer> = new ArrayList<Integer>()
- ti farà risparmiare un sacco di mal di testa a lungo termine.
Se sono necessari più tipi di dati nell'elenco, il secondo esempio è migliore.
fonte
2012-05-29 10:16:31
Per elaborare l'ultimo punto di @ Thilo, molti sviluppatori Java direbbero che il mixaggio di più tipi in un 'Elenco
Lasciatemi aggiungere il mio nome anti-pattern preferito non ancora riconosciuto qui: mescolando tipi non correlati in una singola lista odori di [negazione oggetto] (http://stackoverflow.com/a/3725728/40342). –