0

我喜欢使用enums,它增强了代码的可读性和可用性。但是在某些情况下,我想简化“复制的”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;
            }

        }

    }

    ...

}
4

1 回答 1

1

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

(注意:Java 8 将来可能会使用防御方法

于 2013-02-23T00:50:30.067 回答