考虑以下简单的代码示例:
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
这可以通过引入 this 的静态导入来解决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拜托,不要告诉我,空包是丑陋的风格等等。这个问题只是理论上的问题。