Zusammenfassung sagt ziemlich alles. Hier ist der relevante Code-Snippet in ImmutableList.createFromIterable()
:Warum verbieten ImmutableList.of() und Freunde null Elemente?
if (element == null) {
throw new NullPointerException("at index " + index);
}
Ich habe in diese mehrmals ausgeführt und kann nicht sehen, warum eine Mehrzweckbibliotheksfunktion diese Beschränkung auferlegen sollte.
Edit 1: von "Allzweck", würde ich mit 95% der Fälle glücklich sein. Aber ich glaube nicht, dass ich bis jetzt 100 Anrufe an ImmutableList.of()
geschrieben habe und mehr als einmal davon gebissen worden bin. Vielleicht bin ich ein Ausreißer. :)
Edit 2: Ich denke, meine große Beschwerde ist, dass dies ein "Schluckauf" bei der Interaktion mit Standard java.util
Sammlungen erstellt. Wie Sie in Ihrem Vortrag hervorgehoben haben, können Probleme mit null
s in Sammlungen weit entfernt von dem Punkt auftauchen, an dem diese Nullen eingefügt wurden. Aber wenn ich eine lange Code-Kette habe, die Nullen in eine Standard-Sammlung auf der einen Seite legt und auf der anderen Seite richtig behandelt, dann kann ich die Google-Collection-Klasse an keiner Stelle ersetzen, weil es sofort geht Werfen Sie eine NullPointerException
.
Frage: interpretieren Sie "Mehrzweck" als "100% der Zwecke" oder "95% der Zwecke"? –
in-line beantwortet –
Re: bearbeiten 2: Dies ist zu behaupten, dass alle diese Zwischenpunkte auf dem Weg agnostic sein sollten, ob sie Nullen durch oder nicht passieren. Dem stimme ich nicht zu! Jede dieser APIs sollte entweder explizit zulassen oder explizit verbieten. Jeder kann weiterhin diesen Punkt drücken alles was Sie wollen, aber bitte beachten Sie, es ist reine Beschwerde und überhaupt nicht konstruktiv. Selbst wenn du jeden von uns überzeugt hast, dass wir falsch waren, falsch, falsch (natürlich, natürlich), wäre es trotzdem egal: Es ist nicht so, dass wir es sowieso ändern könnten. –