Wie funktioniert Java Auto Boxing / Unboxing?

Seit JDK 5.0 wurde das automatische Boxen / Unboxen in Java eingeführt. Der Trick ist einfach und hilfreich, aber als ich anfing, verschiedene Konvertierungen zwischen Wrapper-Klassen und primitiven Typen zu testen, war ich ziemlich verwirrt darüber, wie das Konzept des automatischen Boxens in Java funktioniert :

Boxen

int intValue = 0;
Integer intObject = intValue;
byte byteValue = 0;
intObject = byteValue; // ==> Error

Nachdem Sie verschiedene Fälle ausprobiert haben (short, long, float, double), der einzige Fall, der vom Compiler akzeptiert wird, ist, wenn der Typ des Wertes auf dem Rechtsoperator istint. Als ich in die Quelle vonInteger.class Ich fand, dass es nur einen Konstruktor mit implementiertint Parameter.

Mein Fazit ist also, dass das Konzept des Auto-Boxens auf dem Konstruktor basiert, der in der Wrapper-Klasse implementiert ist. Ich möchte wissen, ob diese Schlussfolgerung zutrifft oder ob es ein anderes Konzept für das automatische Boxen gibt.

Unboxing

Integer intObject = new Integer(0);
byte byteValue = intObject; // ==> Error (the same Error with short)
int intValue = intObject; 
double doubleValue = intObject;

Meine Schlussfolgerung zum Unboxing ist, dass die Wrapper-Klasse den Wert angibt, der vom Objekt in den entsprechenden Typ eingeschlossen wird (Integer ==>int), dann verwendet der Compiler die üblichen Regeln zum Konvertieren primitiver Typen (byte =>short =>int =>long =>float =>double). Ich möchte wissen, ob diese Schlussfolgerung zutrifft oder ob beim automatischen Unboxing ein anderes Konzept verwendet wird.

Danke für den Fortschritt :)

Antworten auf die Frage(3)

Ihre Antwort auf die Frage