Авто (не) бокс не работает для составного назначения

Благодаря неявному приведению в составных присваиваниях и операторах увеличения / уменьшения, следующие компиляции:

byte b = 0;
++b; b++; --b; b--;
b += b -= b *= b /= b %= b;
b <<= b >>= b >>>= b;
b |= b &= b ^= b;

А благодаря автоматической упаковке и автоматической распаковке компилируется также следующее:

Integer ii = 0;
++ii; ii++; --ii; ii--;
ii += ii -= ii *= ii /= ii %= ii;
ii <<= ii >>= ii >>>= ii;
ii |= ii &= ii ^= ii;

И все же последняя строка в следующем фрагменте кода дает ошибку времени компиляции:

Byte bb = 0;
++bb; bb++; --bb; bb--; // ... okay so far!
bb += bb; // DOESN'T COMPILE!!!
// "The operator += is undefined for the argument type(s) Byte, byte"

Может кто-нибудь помочь мне понять, что здесь происходит?byte b версия компилируется просто отлично, поэтому не стоитByte bb просто следуйте его примеру и делайте соответствующий бокс и распаковку по мере необходимости?

Дополнительный вопрос

Так есть ли способ заставить составные операторы присваивания работать сByte, Character, а такжеShort на левой стороне, или онипросто незаконно (!!!) для этих типов?

Ответы на вопрос(1)

Ваш ответ на вопрос