Преобразование из примитива Java в классы-оболочки
Я озадачен поведением компилятора Java при назначении примитивов ссылкам на классы-оболочки. Пожалуйста, смотрите код ниже. Строки с комментариями не компилируются.
Я не понимаю логику почему:
abyte
может быть назначен наByte
или жеShort
, но нетInteger
или жеLong
ссылкаa short
может быть назначен наByte
или жеShort
, но нетInteger
или жеLong
ссылкаint
может быть назначен наByte
, Short
, или жеInteger
, но нетLong
ссылкаa long
может быть назначен наLong
, но нетByte
, Short
или жеInteger
ссылкаЯ не вижу картины. Любое понимание этого будет действительно полезно. Благодарю.
Byte s5 = (byte)7;
Short s6 = (byte)7;
Integer s7 = (byte)7; // Does not compile
Long s8 = (byte)7; // Does not compile
Byte s9 = (short)7;
Short s10 = (short)7;
Integer s11 = (short)7; // Does not compile
Long s12 = (short)7; // Does not compile
Byte s1 = (int)7;
Short s2 = (int)7;
Integer s3 = (int)7;
Long s4 = (int)7; // Does not compile
Byte s13 = (long)7; // Does not compile
Short s14 = (long)7; // Does not compile
Integer s15 = (long)7; // Does not compile
Long s16 = (long)7;