Java erlaubt es, java.lang.Short ein Byte zuzuweisen, nicht jedoch java.lang.Integer
final byte b = 12;
Short s = b;
Integer i = b;
Programm kompiliert gut für Short, aber für Integer-Kompilierung schlägt mit der Meldung "inkompatible Typen" fehl.
Es fällt mir schwer, dieses Verhalten zu verstehen. Ich konnte nichts für dieses spezielle Szenario finden.