tratando de sobrecargar el método estático java.lang.Math.sqrt
para int
Tipo:La sobrecarga de los Math.sqrt: la sobrecarga de métodos parece ocultar la original
import static java.lang.Math.sqrt;
class Test
{
private static double sqrt(int n)
{
return sqrt(1.0 * n);
}
public static void main(String[] args)
{
System.out.println(sqrt(1));
}
}
surge un error extraño:
Test.java:7: sqrt(int) in Test cannot be applied to (double)
return sqrt(1.0 * n);
^
1 error
Pero cuando explícitamente haciendo referencia al método java.lang.Math.sqrt
todo va bien:
class Test
{
private static double sqrt(int n)
{
return Math.sqrt(1.0 * n);
}
public static void main(String[] args)
{
System.out.println(sqrt(1));
}
}
El compilador utilizado es el estándar javac, versión 1.6.0_16.
Así que las preguntas son:
- ¿Por qué es el compilador no es capaz de resolver la sobrecarga en el primer caso?
- ¿Dónde se especifica este comportamiento en las especificaciones del lenguaje Java?
Gracias de antemano.
¿Cuál es el error? – Pace
Estrictamente hablando, no está sobrecargando ningún método aquí. –