首页 > 解决方案 > 从覆盖的枚举中删除重复的代码

问题描述

我有一个DP enumwithAB enumconstants 最初有不同的abstract方法实现someMethod()。理想情况下,我们会将Aand合并B为一个enum常量。但是,出于商业原因,这不是一个选择。我试图找出一种方法来制作enum常量AB共享相同的抽象方法someMethod()实现。

public enum DP {
    A {
        @Override
        public void someMethod(){
            // Duplicate code
        }
    },
    B {
        @Override
        public void someMethod(){
            // Duplicate code
        }
    },
    C {
        @Override
        public void someMethod(){
            // Different code
        }
    };

    public abstract void someMethod();
}

标签: javaenums

解决方案


如果我正确理解了您的问题,而不是abstract方法,您可以在方法中添加重复的代码并仅在以下位置覆盖该方法C

public enum DP {
    A,
    B,
    C {
        @Override
        public void someMethod() {
            // Different code
            System.out.println("C");
        }
    };
    
    public void someMethod() {
        //Duplicate code
        System.out.println("AB");
    }
}

然后:

DP.A.someMethod();
DP.B.someMethod();
DP.C.someMethod();

输出:

AB
AB
C

推荐阅读