vi esto en an answer to another question, en referencia a las deficiencias de la especificación Java:¿Esto realmente se está ampliando frente al autoboxing?
hay más carencias y esto es un tema sutil. Compruebe a cabo this:
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); } }
Aquí "largo" que se va a imprimir (no se han comprobado yo mismo), porque el compilador choses> ensanchamiento sobre autoboxing. ¡Tenga cuidado al usar el autoboxing o no lo use en absoluto!
¿Estamos seguros de que esto es realmente un ejemplo de ensanchamiento en lugar de autoboxing, o es algo totalmente diferente?
En mi exploración inicial, estoy de acuerdo con la afirmación de que la salida sería "larga" sobre la base de que i
se declaró como una primitiva y no como un objeto. Sin embargo, si ha cambiado
hello(long x)
a
hello(Long x)
la salida imprimiría "Entero"
lo que realmente está pasando aquí? No sé nada sobre los compiladores/intérpretes de bytecode para Java ...
Ciertamente está ensanchándose. Int se amplía a largo. – EJP