【发布时间】:2010-12-13 05:14:57
【问题描述】:
我有一个像这样定义自己的枚举的类:
public class Test
{
enum MyEnum{E1, E2};
public static void aTestMethod() {
Test2(E1); // << Gives "E1 cannot be resolved" in eclipse.
}
public Test2(MyEnum e) {}
}
如果我指定 MyEnum.E1 它可以正常工作,但我真的只是想将它作为“E1”。知道如何实现这一点,还是必须在另一个文件中定义它才能工作?
结论: 我无法正确获取导入的语法。由于有几个答案表明这是可能的,我将选择一个给我所需语法的答案,并为其他答案投票。
顺便说一句,其中一个非常奇怪的部分(在我让静态导入工作之前),我编写的使用枚举的 switch 语句不允许枚举以其类型为前缀——所有其余代码需要它。伤了我的头。
【问题讨论】:
-
关于 switch 语句中的“非常奇怪”的行为:Java 在 switch 语句中的所有枚举上执行此操作。由于您知道要打开什么类型,他们认为没有理由让您在每个 case 块中再次指定类型。 download.oracle.com/javase/tutorial/java/javaOO/enum.html
-
我猜对我来说是它不允许 Enum 类型前缀。其他任何地方的前缀都是必需的(如果未导入)或可选的。
-
我同意你关于
switch不一致的观点,这让经验不足的 Java 程序员摸不着头脑。