Auto- (un) boxing fehlgeschlagen für die Verbundzuweisung

8

Dank des impliziten Castings in zusammengesetzten Zuweisungen und Inkrementierungs- / Dekrement-Operatoren wird folgendes kompiliert:

%Vor%

Und dank Auto-Boxing und Auto-Unboxing kompiliert das folgende auch:

%Vor%

Und dennoch gibt die letzte Zeile im folgenden Snippet einen Kompilierungsfehler:

%Vor%

Kann mir jemand helfen, herauszufinden, was hier vor sich geht? Die byte b Version kompiliert einfach gut, also sollte nicht Byte bb nur folgen und das entsprechende Boxing und Unboxing wie nötig machen, um Platz zu schaffen?

Zusätzliche Frage

Gibt es also eine Möglichkeit, zusammengesetzte Zuweisungsoperatoren mit Byte , Character und Short auf der linken Seite arbeiten zu lassen, oder sind sie einfach illegal (!!!) für diese Typen?

    
polygenelubricants 24.04.2010, 13:05
quelle

1 Antwort

6

Abschnitt § 5.1.7 (Boxen) des Standards sagt:

%Vor%

Hinweis: Es gibt keine int to Byte . Wenn Sie bb + bb ausführen, wird es in int + int konvertiert, das nicht in Byte eingerahmt wird. Für die byte Version wird int + int direkt in byte umgewandelt (die primitiven Konvertierungen werden reduziert, § 5.1.3 ) so ist es erlaubt.

    
JRL 24.04.2010 13:31
quelle