2010-10-29 25 views
6

¿Por qué es posible pasar entero como argumento donde el parámetro de método es de tipo int y viceversa?Pasando enteros a int y viceversa

public class Salmon { 

public static Integer foo(Integer a, int b){ 
    return a - b; 
} 
public static void main(String[] args) { 
    Integer a = 10; 
    int b = 1; 
    foo(b, a); 
} 
} 

Respuesta

7

Esta es de auto-boxing y auto-unboxing. Básicamente, el compilador realiza llamadas a Integer.valueOf() o x.intValue() de forma adecuada.

El mecanismo exacto no está realmente especificado, pero las secciones relevantes de la especificación son 5.1.7 and 5.1.8.

+3

Cabe señalar que esta característica trae consigo una clase de misteriosos problemas de NullPointerException. – Pointy

+0

¿Podría desarrollarse? En cuyo caso, ¿esto arrojó una NullPointerException? – mxdsp

+0

@mxdsp: Eso no es parte de la pregunta en absoluto. Si se encuentra con un NPE que no puede explicar, haga una nueva pregunta después de hacer una investigación exhaustiva. (Hay * muchas * preguntas sobre los NPE.) –

Cuestiones relacionadas