改进嵌套枚举定义

时间:2013-02-22 20:48:13

标签: java enums

我喜欢使用enum,它增强了代码的可读性和可用性。但有一些像这样的情况,我想简化“复制”的A和B“枚举”构造和功能......是否可能?

public static enum KEYS {

    KEYS() {};

    public static enum RSA {

        RSA() {};

        public static enum A {

            ONE (new String[]{...}),
            TWO (new String[]{...}),
            THREE (new String[]{...});

            public final String[] keys;

            A(String[] keys) {
                this.keys=keys;
            }

            public int getVersion(){
                return keys.length;
            }

        }

        public static enum B {

            ONE (new String[]{...}),
            TWO (new String[]{...}),
            THREE (new String[]{...});

            public final String[] keys;

            B(String[] keys) {
                this.keys=keys;
            }

            public int getVersion(){
                return keys.length;
            }

        }

    }

    ...

}

1 个答案:

答案 0 :(得分:1)

目前不可能有各种枚举(嵌套或非嵌套)重用的getVersion()方法的通用实现,因为Java使所有枚举最终(不可扩展),因此它们不能相互继承或其他类。你必须为每个枚举定义所有方法和构造函数。

(注意:将来有可能使用 defender方法使用Java 8)