Перегрузка с помощью Short и int

Почему этот код будет печатать int?

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

Потому что расширение бьет бокс

Причина:

Потому что расширение было там задолго до того, где позже был добавлен бокс, чтобы не сломать какой-либо код, он делает это.