Autoboxing: Also kann ich schreiben: Integer i = 0; anstelle von: Integer i = new Integer(0);
Autoboxing zu kommen scheint bis auf die Tatsache, dass ich schreiben kann:
Integer i = 0;
statt:
Integer i = new Integer(0);
So, kann der compiler automatisch konvertieren eines primitiven zu einem Objekt.
Ist, dass die Idee? Warum ist das wichtig?
InformationsquelleAutor Harry Quince | 2009-04-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Irgendwie vereinfacht es ein wenig zu viel.
Autoboxing auch ins Spiel kommt bei der Verwendung von Sammlungen. Wie erklärt, in sun ' s java-docs:
Tolle übersicht über Autoboxing
InformationsquelleAutor Brian Gianforcaro
BTW
entspricht
Die Unterscheidung ist, dass valueOf() kein neues Objekt für Werte zwischen -128 und 127 (Anscheinend wird optimiert werden, wenn die Java-6u14)
denn es kann nur cache der gemeinsamen Objekte. Caching jede ganze Zahl verwenden würden 40 GB Speicher (nur bei Ganzzahlen)
InformationsquelleAutor Peter Lawrey
Vorhanden, so dass Sie können code schreiben, wie
Für die einzelnen ganzen zahlen sollte man standardmäßig verwenden den Typ int, nicht Integer. Integer ist überwiegend für die Verwendung in Sammlungen.
Beachten Sie, dass eine Lange unterscheidet sich von den gleichen Wert wie eine Ganzzahl (mit equals()), aber wie lange ist es gleich ein int (mit ==).
InformationsquelleAutor starblue
Das ist die Idee, ja. Es ist sogar bequemer zuordnen können, eine ganze Zahl in einen int, obwohl.
Könnte man argumentieren, dass autoboxing-Adressen eher ein symptom als eine Ursache. Die wirkliche Quelle der Verwirrung ist, dass Java-Typ-system ist inkonsistent: der Bedarf für primitive und Objekt-Referenzen ist künstlich und peinlich. Autoboxing mildert das etwas.
Ich sehe wirklich nicht, warum es so eine große Sache. Ich denke, Sie sollten über Links gut genug allein. Dies scheint nicht viel hinzuzufügen, was ich sagen kann, so weit. Natürlich, ich habe gelernt, über diese Funktion etwa fünf Minuten vor.
Ja, das ist es, was ich meine. Ich bin nicht ein OO-Puristen von einer Strecke, aber es ist nicht ersichtlich, warum ein Programmierer Vorteile aus dass sowohl eine int und Integer zur Verfügung. Ich denke, eine Abstraktion sollte ausreichen werden, um den "integer-ness".
Sie klingen wie ein OO-Puristen zu mir.
Vielen Dank, denke ich. Aber denken Sie daran: Sie KÖNNEN wählen, nicht zu autobox in Java, aber Sie MÜSSEN sich entscheiden, ob ein int oder eine Ganzzahl zur Darstellung einer ganzen Zahl. Wenn das scheint "gut genug" für Sie, in Ordnung. Ansonsten, autobox Weg!
InformationsquelleAutor jcrossley3
Sorgt für mehr lesbar und übersichtlicher code. Vor allem, wenn du tust Operationen (Da Java nicht operator-overloading).
InformationsquelleAutor CookieOfFortune
Mit meiner zynisch Hut auf: make-up für Einschränkungen auf der original-Java (ich meine Eiche hier) spec. Nicht nur beim ersten mal.
Wo fange ich an? Die Zeit-Datum-API, die fehlende Collections API von Anfang arrays "Licht" - Objekte und nicht übergeordnete Objekt.equals(), das fehlen von Generika von Anfang an, das "weird" - cloning-Mechanismus... Man schließlich subtile knarrt in der Sprache, oder über Sie gelesen und wie Sie gepatcht wurden. Am Ende des Tages war Java eine belebte eingebettete Sprache für die dot-com-boom, und es zeigt. Ich bevorzuge C#, obwohl die von Microsoft.
InformationsquelleAutor Humphrey Bogart
Von dem, was ich erinnere mich aus der Lektüre Joshua Bloch Effektiv Java, sollten Sie die primitive über Ihre boxed-Pendants. Autoboxing, die ohne Rücksicht auf die Nebenwirkungen können Probleme verursachen.
Weil primitives werden immer kopiert, wenn Sie weitergegeben werden. Ich glaube nicht, dass dies um wahr zu sein von Ihren boxed-Pendants.
InformationsquelleAutor Julson Lim
Hinzufügen zu Lim ' s Kommentar, primitive werden auf dem stack gespeichert werden, und primitive-Wrapper, die als Objekte gespeichert sind, über den Haufen... Es gibt subtile Auswirkungen aufgrund dieser.
InformationsquelleAutor Humphrey Bogart
Der Hauptvorteil wäre die Lesbarkeit, syntaktische Zucker grundsätzlich. Java ist schon sehr ausführlich, so versuchen alle möglichen Wege, um die syntax kürzer.
InformationsquelleAutor KahWee Teng