, jeśli masz klasę ze statycznym importem do java.lang.Integer
, a moja klasa ma również statyczną metodę parseInt(String)
, a następnie, którą metodę wywoła parseInt("12345")
?Metoda importowania statycznego nakłada się na
Z góry dziękuję!
, jeśli masz klasę ze statycznym importem do java.lang.Integer
, a moja klasa ma również statyczną metodę parseInt(String)
, a następnie, którą metodę wywoła parseInt("12345")
?Metoda importowania statycznego nakłada się na
Z góry dziękuję!
Jeśli jesteś w swojej klasie, zadzwoni pod numer , podając metodę.
Jeśli znajdujesz się poza klasą (i importujesz obie klasy), musisz określić, której klasy użyć.
Udowodnić: http://java.sun.com/docs/books/jls/download/langspec-3.0.pdf $ 8 i $ 6,3 (patrz komentarze)
Spróbuj tego:
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;
}
}
Rezultat:
str
123
metoda w was klasie jest wykonywany jako pierwszy.
Czy możesz pokazać referencję wskazującą, że jest to gwarantowane przez standard? Może to być kompilator zależny ... – amit
czekając na sm1, aby odpowiedzieć na amit – MozenRath
Ze specyfikacji języka Java $ 8: Zakres (§ 6.3) członka (§8.2) jest całym treścią deklaracji klasy, do której członek należy. | Od 6,3: Zakres deklaracji jest regionem programu, w ramach którego podmiot deklarowany przez deklarację może być określany przy użyciu prostej nazwy (o ile jest ona widoczna (§ 6.3.1)). – Paranaix