試圖重載java.lang.Math.sqrt
靜態方法int
類型:超載Math.sqrt的:重載方法似乎隱藏原來的
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語言規範中指定的位置?
在此先感謝。
什麼是錯誤? – Pace 2010-02-17 13:21:09
嚴格地說,你不會在這裏重載任何方法。 – 2010-02-17 13:21:57