【发布时间】:2013-01-10 12:51:24
【问题描述】:
考虑以下简单的代码示例:
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)引用枚举字段?
附:请不要告诉我,空包是丑陋的风格等等。这个问题只是理论上的问题。
【问题讨论】:
-
我在第一个问题上遇到了和你一样的问题......据我所知,这是一个限制。
标签: java importerror