扩展Java枚举

lso*_*ira 5 java enums

在处理Java枚举时,我对代码重用的最佳设计模式有疑问.基本上,我想要实现的是能够定义几个模拟静态业务集合(常量集)的枚举,但我也想用最少的编码来共享它们之间的行为.

通过抽象类的类继承来实现这是微不足道的,但是,由于Java枚举无法扩展(它们只能实现接口),这种类型的工作很繁琐,并且涉及很多容易出错的复制/粘贴工作(从枚举中复制代码)枚举).应在所有枚举之间共享的"业务逻辑"示例包括从/转换为字符串,实例和逻辑比较等.

我现在最好的方法是将helper类与业务接口结合使用,但这只能降低代码复杂性(因为所有枚举仍然必须声明并调用辅助类).参见示例(只是为了澄清):

public enum MyEnum {
    A, B, C;

    // Just about any method fits the description - equals() is a mere example
    public boolean equals(MyEnum that) {
        ObjectUtils.equals(this, that);
    }
} 
Run Code Online (Sandbox Code Playgroud)

StackOverflowers如何处理这种"语言功能"?

Pet*_*rey 2

我会做同样的事情,或者将枚举合并成一个超级枚举。

有了 Java 8,这会更容易。您将能够定义default接口方法的实现并扩展enum接口。