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?
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?
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.
Tags und Links java compiler-errors autoboxing implicit-cast compound-assignment