Java enum overkill?[已关闭]

2022-09-03 08:39:01

我经常遇到这样的情况,即我需要一个可以表示为简单枚举类型的类的变量,例如:

private enum PageOrder {DOWN_THEN_OVER, OVER_THEN_DOWN};

如果在保存变量的类中声明枚举类型,那么我必须使用不合适的限定名称。但是,如果我创建一个新类,我有一个仅用于简单枚举声明的类,这对我来说似乎有些过分。MyClass.PageOrder

因此,我经常使用整数而不是枚举类型。

对此主题有任何意见/建议吗?


答案 1

你可以做

import static yourpkg.MyClass.PageOrder;

这将始终有效,因为内部枚举始终是静态的。请注意,即使在定义类的文件中,这也有效。MyClass


答案 2

因此,我经常使用整数而不是枚举类型。

请不要这样做。

您通常可以为父类选择一个名称,而该名称实际上有助于代码的清晰度。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 importenum

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;
    }

}

显然,如果 是 ,则不能采用此方法。enumprivate