пытается перегрузить статический метод java.lang.Math.sqrt
для int
типа:
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));
}
}
возникает странная ошибка:
Test.java:7: sqrt(int) in Test cannot be applied to (double)
return sqrt(1.0 * n);
^
1 error
Но при явной ссылке на метод java.lang.Math.sqrt
все идет хорошо:
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));
}
}
Используется стандартный компилятор javac , версия 1.6.0_16 .
Итак, вопросы:
- Почему компилятор не может разрешить перегрузку в первом случае?
- Где это поведение указано в спецификациях языка Java?
Заранее спасибо.