если у вас есть класс со статическим импортом в 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
ждет sm1 ответить на amit – MozenRath
Из спецификации языка Java $ 8: область действия (§6.3) члена (§8.2) - это весь текст объявления класса, к которому принадлежит член принадлежит. | От $ 6.3: область действия декларации - это область программы, в рамках которой сущность, объявленная декларацией, может ссылаться на простое имя (при условии, что оно является видимым (§6.3.1)). – Paranaix