import static java.lang.Integer.*;
import static java.lang.Long.*;
public class StaticImortError {
public static void main(String args []) {
System.out.println(MAX_VALUE);
}
}
任何人都可以解释为什么这个程序显示编译时错误,如果我试图使用像
import static java.lang.Integer.*;
import static java.lang.Long.MAX_VALUE;
,它运行正常并按预期显示长数据类型的最大值,但上面的导入显示错误。
答案 0 :(得分:7)
问题是你必须明确说明在这种情况下要导入的内容,因为这两个类的常量都是MAX_VALUE
。
如果您打开源代码,您会看到。
由于您无法在java中指定别名,因此您无法使用Integer.MAX_VALUE
/ Long.MAX_VALUE
。
只是旁注:我不建议static
导入Integer.MAX_VALUE
(也不Long.MAX_VALUE
),因为如果你有一个相当大的类,并且在中间你引用{{1}那么将来会有人问他 “我们谈论的是谁的最大价值?”
答案 1 :(得分:4)
您要导入MAX_VALUE
两次。
它包含在java.lang.Integer.*;
和java.lang.Long.*;
答案 2 :(得分:0)
在这种情况下,您可以导入与给定类关联的静态方法和字段。
例如,Assert
类包含许多方法,如assertEquals
。
不是每次都写Assert.assertEquals
,而是写
import static org.junit.Assert.*;
然后在代码中使用assertEquals
。
这不起作用的原因是因为MAX_VALUE
和Long.MAX_VALUE
之间对Integer.MAX_VALUE
的调用不明确