Java中的静态导入

时间:2014-03-06 21:04:37

标签: java compilation

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;,它运行正常并按预期显示长数据类型的最大值,但上面的导入显示错误。

3 个答案:

答案 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_VALUELong.MAX_VALUE之间对Integer.MAX_VALUE的调用不明确