创建具有确切功能但名称不同的Java枚举和类

时间:2013-12-17 08:34:45

标签: java enums

我有一个包含很长但描述性名称的枚举,我不想缩短原始名称,我只想创建具有不同名称的枚举的复制。如;

public enum EnumWithLongButDescriptiveName {
    // code goes here
}

我想要另一个具有完全相同功能但名称较短的枚举。如;

public enum EWLBDN {
    // preferably code goes here
}

因此,当我想在我的代码中使用我的原始枚举时,我不想通过输入长名称来获取它,而是使用短名称。但我不想删除原来的枚举。

我可以这样做,如果是的话,我该怎么做?

谢谢。

3 个答案:

答案 0 :(得分:2)

不知道别名和扩展也不是一个选项,因为Enums是最终的。 但是,您可以创建一个interface,用于从枚举中获取某些键。

枚举:

public enum ReallyLongEnumNameWhichIsntActuallyAppropriate implements TinyEnum{
    ONE,
    TWO,
    THREE;

    @Override
    public ReallyLongEnumNameWhichIsntActuallyAppropriate getONE(){
        return ReallyLongEnumNameWhichIsntActuallyAppropriate.ONE;  
    }
}

接口:

public interface TinyEnum {

    public ReallyLongEnumNameWhichIsntActuallyAppropriate getONE();
}

答案 1 :(得分:1)

我认为最适合您的解决方案是在要使用它们的类中静态导入原始枚举的所有值:

import static yourpackage.EnumWithLongAndDescriptiveName.*;

我个人认为,你不应该尝试创建具有类似功能的类或枚举,只是名称不同,因为它会导致代码重复,并且会使维护和理解变得更加困难。

特别是现在你有很多具有良好内容辅助功能的IDE,它们可以使用最长的名字变得轻而易举。

答案 2 :(得分:0)

你显然想要某种别名,但这并不是真的支持。在Java中根本不可能混淆类型,这是它最大的弱点之一,恕我直言。

你唯一能做的就是用足够短的名字来定义常量,比如:

 final public static EnumWithLongButDescriptiveName lne = EnumWithLongButDescriptiveName.LongNameEnum