我正在对 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);
}
}
歧义必须仍然存在。为什么编译没有问题?