cercando di sovraccaricare il metodo statico java.lang.Math.sqrt
per int
Tipo:Sovraccarico di Math.sqrt: metodo di sovraccarico sembra nascondere l'originale
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));
}
}
nasce un errore strano:
Test.java:7: sqrt(int) in Test cannot be applied to (double)
return sqrt(1.0 * n);
^
1 error
Ma quando esplicitamente riferimento il metodo java.lang.Math.sqrt
tutto sta andando bene:
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));
}
}
Il compilatore utilizzato è lo standard javac, versione 1.6.0_16.
Quindi le domande sono:
- Perché il compilatore non è in grado di risolvere il sovraccarico nel primo caso?
- Dove viene specificato questo comportamento nelle specifiche del linguaggio Java?
Grazie in anticipo.
Qual è l'errore? – Pace
Strettamente parlando non stai sovraccaricando alcun metodo qui. –