Результаты поиска
Это действительно расширение против автобоксинга?
Я видел это в ответе на другой вопрос, в отношении недостатков спецификации Java:
Есть еще недостатки и это тонкая тема. Проверить это:
public class methodOverloading{ public static void hello(Integer x){ System.out.println("Integer"); } public static void hello(long x){ System.out.println("long"); } public static void main(String[] args){ int i = 5; hello(i); } }Здесь "long" будет напечатан (не проверял его сам), потому что компилятор выбирает расширение вместо автоматического бокса. Будьте осторожны при использовании автоматического бокса или не используйте его вообще!
Уверены ли мы, что это на самом деле пример расширения вместо автобоксинга, или это что-то совсем другое?
На моем первоначальном сканировании я бы согласился с утверждением, что выход будет "long" на основе i , объявленного как примитив, а не объект. Однако, если вы изменились
hello(long x)
к
hello(Long x)
вывод будет печатать "Integer"
Что здесь на самом деле происходит? Я ничего не знаю о компиляторах/интерпретаторах байт-кода для java...