Я не понимаю, почему Integer и int могут использоваться как взаимозаменяемые в Java, даже если один является примитивным типом, а другой - объектом?
Например:
Integer b = 42; int a = b;
Или
int d = 12; Integer c = d;