Я делаю статический импорт членов класса Long и Integer:
import static java.lang.Integer.MAX_VALUE;
import static java.lang.Long.MAX_VALUE;
Теперь, если я пытаюсь использовать эту переменную MAX_VALUE и распечатать ее, я получу ошибку:
import static java.lang.Integer.MAX_VALUE;
import static java.lang.Long.MAX_VALUE;
public class StaticImportDemo2 {
public static void main(String[] args) {
//Error :: The field MAX_VALUE is ambiguous
System.out.println("Print without static import Integer.MAX_VALUE "+MAX_VALUE);
}
}
Это нормально.Чтобы устранить ошибку, мне придется удалить один статический импорт, чтобы устранить эту неоднозначность.
Основная проблема, которую я получаю, заключается в том, что если я использую подстановочный знак *
со статическим импортом класса Integer, класс компилируется без ошибок:
import static java.lang.System.out;
import static java.lang.Integer.*;
import static java.lang.Long.MAX_VALUE;
public class StaticImportDemo2 {
public static void main(String[] args) {
System.out.println("Print without static import Integer.MAX_VALUE " + MAX_VALUE);
}
}
Неоднозначность все еще должна существовать.Почему это компилируется без проблем?