如果你有一個靜態導入類到java.lang.Integer
而我的類也有一個靜態方法parseInt(String)
那麼哪一個方法會調用parseInt("12345")
指向?靜態導入方法重疊
在此先感謝!
如果你有一個靜態導入類到java.lang.Integer
而我的類也有一個靜態方法parseInt(String)
那麼哪一個方法會調用parseInt("12345")
指向?靜態導入方法重疊
在此先感謝!
如果你在自己的班級內,它會調用你的方法。
如果您在班級之外(並且導入了兩個班級),則必須指定要使用的班級。
證明:http://java.sun.com/docs/books/jls/download/langspec-3.0.pdf $ 8和$ 6.3(見註釋)
試試這個:
import static java.lang.Integer.parseInt;
public class Test {
public static void main(String[] args) {
System.out.println(parseInt("12345"));
}
private static int parseInt(String str) {
System.out.println("str");
return 123;
}
}
結果:
str
123
在你類中的方法是首先執行。
您能否顯示一個參考文獻,指出標準保證是這種情況?它可能是依賴於編譯器的... – amit 2012-01-02 12:06:01
等待sm1回覆amit – MozenRath 2012-01-02 12:14:59
從Java語言規範$ 8:成員(§8.2)的範圍(§6.3)是成員的類聲明的整個主體所屬。 |從6.3美元起:聲明的範圍是聲明中聲明的實體可以使用簡單名稱引用的程序區域(假設它是不可見的(§6.3.1))。 – Paranaix 2012-01-02 12:22:49