En realidad este es ambiguo porque Autoboxing en Java le permite llamar a un método que espera un int
con un revés Integer
y el vicio, por lo getArray(1, 2)
realmente puede ser una llamada válida para cualquiera de sus métodos.
Según entiendo lo que estás haciendo, quieres tener un método de utilidad para crear una matriz de lo que sea. Tal vez lo más simple que puede hacer es cambiar el nombre del método que trata con int
a getIntArray()
. O simplemente use new int[] {1, 2}
que es muy legible si quiere una matriz int
.
Puede encontrar esta información en la especificación del idioma en http://docs.oracle.com/javase/specs/jls/se5.0/jls3.pdf (en su caso, determinar el método invocado irá al paso 3 del proceso descrito en la sección 15.12.2 Tiempo de compilación Paso 2: Determine la firma del método, porque utiliza la variable arity, y en el paso 3, ambas llamadas al método son válidas)
El compilador puede estar intentando aplicar el autoboxing, en cuyo caso no puede elegir ninguno de sus métodos. No estoy seguro, pero puede intentar emitir sus argumentos explícitamente: 'getArray ((int) 1, (int) 2)' –
Etiquete con el lenguaje apropiado (Java? C#?). –
Por cierto javac del JDK 1.7 está de acuerdo con eclipse 4.2 –