2014-03-28 24 views
6

Nach Javadoc, HttpServletRequest.getCookies() "Gibt ein Array zurück, das alle Cookie-Objekte enthält, die der Client mit dieser Anfrage gesendet hat.", Und es wird null zurückgegeben, wenn keine Cookies gesendet wurden.Warum gibt request.getCookies() null zurück, wenn keine Cookies gesendet wurden?

Gibt es einen anderen Grund für dieses Verhalten als die Rückgabe eines leeren Arrays, das mir etwas intuitiver erscheint und nicht auf Null überprüft werden muss, bevor ich auf dem Array nach einem bestimmten Cookie suche?

+1

File.list() tut ähnlich - gibt null zurück, wenn kein Verzeichnis oder E/A-Fehler auftritt - sehr ärgerlich. – Will

Antwort

6

Das war früher eine gängige Java-Praxis in solchen Situationen. Der Hauptgrund war wahrscheinlich, dass es etwas effizienter war, nichts zurückzugeben, als eine leere Liste zurückzugeben (weniger Arbeit am Garbage Collector).

+1

+1 für weniger Arbeit auf GC :) – Keerthivasan

+1

Das macht Sinn, aber sollte es nicht praktikabel sein, ein leeres Array in der Klasse null zu haben und es anstelle von null zurückgeben? Ich weiß nicht, wie sich der GC in diesen Fällen verhält, aber ich vermute, dass auf die statische Variable per Referenz zugegriffen werden würde und nicht GC'ed sein müsste ... oder liege ich falsch? – Raibaz

+0

Sie sind nicht falsch, was ich darüber denken kann, ist, dass diese Situation das Ergebnis einer "üblichen Praxis" ist (sogar in Javascript können wir ähnliche Verhaltensweisen finden), wie Mike gerade schrieb. – sataniccrow

Verwandte Themen