考虑下面的代码简单的例子:
public class TestStaticImport {
static enum Branches {
APPLE,
IBM
}
public static void doSomething(Branches branch) {
if (branch == APPLE) {
System.out.println("Apple");
}
}
}
如果我们将尝试编译这段代码,我们会得到错误信息:
java: cannot find symbol
symbol: variable APPLE
location: class TestStaticImport
这可以通过引入这个静态进口来解决enum
:
import static
... TestStaticImport.Branches.*
但在这一刻难以理解的事情(我)开始:
这个解决方案工作得很好,一切都很好编译,直到下课TestStaticImport
将被转移到空根包,即没有任何
package blablabla;
在这个Java文件的顶部;
代码行: import static TestStaticImport.Branches.*;
在我的IntelliJ IDEA被突出显示为有效的代码(IDE的名称并不重要,只是信息),但是当我尝试编译这样的代码将出现以下错误:
java: package TestStaticImport does not exist
所以,其实有两个问题:
1) 主要问题 :为什么是不可能import static
的空目录?
2)什么是另一种方式(如果有的话),以允许在代码中引用到枚举的领域只用自己的名字(如APPLE
,而不是Branches.APPLE
),除了静态导入?
PS请不要告诉我,那空包装是丑陋的风格等等。 这个问题仅仅是理论问题。