Domanda

Sommario dice praticamente tutto. Ecco il relativo frammento di codice in ImmutableList.createFromIterable():

  if (element == null) {
    throw new NullPointerException("at index " + index);
  }

ho incontrato diverse volte e non riesco a vedere il motivo per cui una funzione di libreria general-purpose dovrebbe imporre questa limitazione.

Modifica 1: da "general-purpose", sarei felice con il 95% dei casi. Ma non penso che ho scritto 100 chiamate al ImmutableList.of() ancora, e sono stato morso da più di una volta. Forse sono un outlier, però. :)

Modifica 2: Credo che la mia grande lamentela è che questo crea un "incidente di percorso" quando si interagisce con le collezioni java.util standard. Come lei ha sottolineato nel discorso, i problemi con nulls in collezioni possono presentarsi lontano da dove sono stati inseriti i valori nulli. Ma se ho una lunga catena di codice che mette i valori nulli in una collezione standard ad un'estremità e li gestisce correttamente l'altra, allora io sono in grado di sostituire una classe collezioni Google in qualsiasi punto lungo la strada, perché sarà subito gettare un NullPointerException.

È stato utile?

Soluzione

ho spiegato questo al punto di questo video 25 minuti: http://www.youtube.com/watch?v=ZeO_J2OcHYM

Ci scusiamo per la risposta pigra, ma dopo tutto questo è solo un "perché" questione (probabilmente non appropriato per StackOverflow?).

Modifica Ecco un altro punto non sono sicuro che ho fatto chiaro nel video: il totale (in tutti codice Java al mondo), la quantità di codice aggiuntivo che deve essere scritto per coloro casi nulli-friendly per utilizzare il vecchio standbys Collections.unmodifiableList(Arrays.asList(...)) ecc è sopraffatto dalla totale (in tutti codice Java al mondo) quantità di checkArgument(!foos.contains(null)) in più chiamate tutti avrebbero bisogno di aggiungere se le nostre collezioni non si prendono cura di questo per voi. La maggior parte, di gran lunga, usi di una collezione non si aspettano alcun null ad essere presenti, e in realtà dovrebbe fallire veloce se ce ne sono.

Altri suggerimenti

In generale in Google Collezioni gli sviluppatori sono del gruppo che non crede che i null dovrebbero essere un parametro di uso generale previsto.

Una ragione è che permette funzioni che lavorano sulla lista non devono controllare ogni elemento per Null, migliorando le prestazioni in modo significativo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top