我经常遇到需要一个可以表示为简单枚举类型的类的变量的情况,例如:
private enum PageOrder {DOWN_THEN_OVER, OVER_THEN_DOWN};
如果在包含变量的类中声明枚举类型,那么我必须使用不合适的限定名MyClass.PageOrder
。
但是如果我创建一个新类,我只有一个简单的枚举声明类,这对我来说似乎有点过分了。
出于这个原因,我经常使用整数而不是枚举类型。
有关此主题的任何意见/建议吗?
答案 0 :(得分:34)
你可以做到
import static yourpkg.MyClass.PageOrder;
这将始终有效inner enums are always static。请注意,即使在定义MyClass
类的文件中也是如此。
答案 1 :(得分:21)
出于这个原因,我经常使用整数而不是枚举类型。
请不要这样做。
您通常可以选择父类的名称和实际有助于清晰代码的enum
。
class Page {
enum Order {
DOWN_THEN_OVER, OVER_THEN_DOWN;
}
}
// Accessing: A little verbose but clear and efficient.
Page.Order order = Page.Order.DOWN_THEN_OVER;
您还可以static import
使用enum
,但我更喜欢上面的详细信息。
import static com.oldcurmudgeon.test.Test.Order.DOWN_THEN_OVER;
import static com.oldcurmudgeon.test.Test.Order.OVER_THEN_DOWN;
public class Test {
enum Order {
DOWN_THEN_OVER, OVER_THEN_DOWN;
}
public void test() {
Order pageOrder = DOWN_THEN_OVER;
}
}
如果enum
为private
,显然你不能采用这种方法。
答案 2 :(得分:-2)
如果你使用enum只是为了给编号提供编码器友好名称,而你永远不必将它们写入屏幕,或者从文件中读取它们,那么这完全是一种过度杀伤力。不幸的是,java中的所有内容都必须是一个类。如果您正在使用枚举,我建议使用常量。
如果要以用户友好的格式打印枚举值,或者将值转换为枚举,则可能需要使用该类。