Unboxing von "Integers"
-
Bashar schrieb:
Die werden nicht ausgepackt, die Referenzen sind einfach tatsächlich gleich. Das sind die in Integer vordefinierten statischen Instanzen für kleinere Werte.
Danke für deine Antwort. Hier steht auch noch etwas dazu: http://stackoverflow.com/questions/13098143/java-integer-constant-pool
-
Krass... beim Lesen musste ich schon mehrmals "wtf" denken
-
GPC schrieb:
Krass... beim Lesen musste ich schon mehrmals "wtf" denken
Das lustigste Java "Feature" ist dies:
Object o = true ? new Integer(123) : new Double(456);
Welchen Typ hat das Objekt das o referenziert und welchen Inhalt hat dieses Objekt?
-
Hast du eine quelle die erklärt warum das so ist ?
-
lol
Kann es sein, dass der Integer nach Double in irgendeiner Form gecastet wird, weil das Integer eine Untermenge von Double sein soll (auch wenn das nicht aus der Klassenstruktur hervorgeht)?
-
Z schrieb:
Das lustigste Java "Feature" ist dies:
Object o = true ? new Integer(123) : new Double(456);
Welchen Typ hat das Objekt das o referenziert und welchen Inhalt hat dieses Objekt?
Na ja, ich kenne mich mit den Wrapperklassen Integer etc. nicht aus, aber ich würde im Normalfall erwarten, dass der statische Typ "Object" und der dynamische "Integer" wäre.
So wird's natürlich nicht sein, also raus damit
-
Für alle, die zu faul zum Ausprobieren sind: Der dynamische Typ ist Double. Aber warum das so ist ... keine Ahnung. Hab ich auf Anhieb auch nicht aus der Sprachspezifikation herauslesen können.
-
Bashar schrieb:
Für alle, die zu faul zum Ausprobieren sind: Der dynamische Typ ist Double. Aber warum das so ist ... keine Ahnung. Hab ich auf Anhieb auch nicht aus der Sprachspezifikation herauslesen können.
http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.25
siehe 15.25.
-
Welche Sprachspezifikation denkst du meinte ich?
-
Bashar schrieb:
Welche Sprachspezifikation denkst du meinte ich?
Das kann ich nicht wissen. Ich nehme an die von Java. Da steht dann:
... Otherwise, binary numeric promotion (§5.6.2) is applied to the operand types, and the type of the conditional expression is the promoted type of the second and third operands. Note that binary numeric promotion performs value set conversion (§5.1.13) and may perform unboxing conversion (§5.1.8).
-
Z schrieb:
Otherwise, binary numeric promotion...
Danke. Ich hab diesen Punkt schlicht und einfach übersehen...
-
Nicht übel, dieses "Feature"