public static void main(String[] args) {
short s = 5;
A(s);
}
public static void A(int a){
System.out.println("int");
}
public static void A(Short a){
System.out.println("short");
}
Ответ 1
Потому что повышение до int было в версии 1.0 Java, и в версии 5.0 был добавлен автоматический бокс. Изменение поведения приведет к поломке кода, написанного для более старой версии Java.
Однако, подобные типы смешивания подсказывают, что что-то не так с вашим дизайном, это только то, что вы найдете в головоломках.;)
Ответ 2
Потому что расширение бьет бокс
Причина:
Потому что расширение было там задолго до того, где позже был добавлен бокс, чтобы не сломать какой-либо код, он делает это.