java - 改进嵌套枚举定义

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

        }

    }

    ...

}

最佳答案

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

(注意:将来 Java 8 可能会使用 Defender 方法)

关于java - 改进嵌套枚举定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15032926/

相关文章:

javascript - 这是实现枚举的正确方法吗?

java - 为什么枚举在这种情况下比 HashMap 更有用?

java - 在给定时间值中将小时与分钟分开

java - Java 枚举成员

python - 将字符串表示与使用整数值的枚举相关联?

java - hibernate - 如何为java类正确生成.hbn.xml映射文件,该文件对应于具有复合主键的表?

c++ - 你如何通过引用传递枚举?

java - Spring MVC 创建对象请求

java - 使用setContentView时多次定义函数

java - java中如何实现队列和优先级队列