Ist es der Compiler oder die Laufzeit das Auto-Boxen/Unboxing?Wer macht das Auto-Boxen/Unboxing?
Betrachten Sie das folgende Beispiel:
public Integer get() {
return 1; //(1)
}
Bei (1), der primitiven Integer-Wert wird wie new Integer(1)
in etwas umgewandelt werden, und kehrte zurück. Das ist tatsächlich eine Art von implizitem Kampf, der als Auto-Boxen bekannt ist, aber wer wird das tun? Der Compiler oder die JVM?
Ich fing gerade an, die ASM zu lernen, und solch ein Boxproblem verwirrte mich wirklich.
betrachten Sie dies: int a = myScan.nextInt(); Integer b = a; Wie wird der Compiler das tun, ohne wissen zu können, welchen Wert a haben wird? – Stultuske
@Stultuske Der Compiler wird zu 'Integer b = Integer.valueOf (a);'. Einfach. Es muss den Wert von "a" nicht kennen. Siehe auch die akzeptierte Antwort auf diese Frage. –