2014-07-11 6 views
5

Java 8 bietet mehrere funktionale Schnittstellen im Paket java.util.function.Warum java.util.function keine spezialisierten funktionalen Schnittstellen für alle primitiven Typen definiert?

Für jede Grundfunktion (Funktion, Consumer, Prädikats, Lieferant ...) dort definiert sind andere, wo der Typ-Parameter für die folgenden Urtyp spezialisiert: double, int, long.

Diese Frage geht es um die Motivation solcher Schnittstellen: Why are there primitive functions like DoubleFunction in Java 8

Aber warum nicht alle primitiven Typen abgedeckt sind (z Schwimmer fehlt)?

Antwort

9

Dies wurde entschieden, um API Größe Explosion zu verhindern. Gezwungen, primitive Spezialisierungen einführen überhaupt schon ein Schwachpunkt ist, so war der Kompromiss nur für die wesentliche Typen zu spezialisieren, die long und double sind, und zusätzlich für int als die auffälligste primitive Art: die Art des Array-Indizes und integer Literale. Alle anderen Arten können zu diesen befördert werden.

In this post auf der Lambda-dev Mailing-Liste können Sie die offizielle Erklärung von Brian Goetz lesen.

Verwandte Themen