Java 以通用方式将枚举与集合绑定 形势

Java 以通用方式将枚举与集合绑定 形势,java,binding,enums,Java,Binding,Enums,我正在对我正在编写的一些代码进行重构 我有一个bean集合(使用Hibernate从数据库中检索,但在这里不相关)。这些bean如下所示(为了演示,模型已经简化): 它们存储在Map中,其中键是MyBeanid 另一方面,我有一个枚举,来自外部库,不可编辑。看起来是这样的: public enum ExternalEnum { FIRST_VALUE("FirstValue"), SECOND_VALUE("SecondValue"), THIRD_VALUE("Thir

我正在对我正在编写的一些代码进行重构

我有一个bean集合(使用Hibernate从数据库中检索,但在这里不相关)。这些bean如下所示(为了演示,模型已经简化):

它们存储在
Map
中,其中键是
MyBean
id

另一方面,我有一个枚举,来自外部库,不可编辑。看起来是这样的:

public enum ExternalEnum
{
    FIRST_VALUE("FirstValue"),
    SECOND_VALUE("SecondValue"),
    THIRD_VALUE("ThirdValue");

    // Constructor and getter
}
Map<Integer, MyBean> myBeans = retrieveFromDBThroughDAO();
ExternalEnum eeValue = fetchValueFromSomewhere();

switch (eeValue)
{
    case FIRST_VALUE:
        return myBeans.get(0);

    case SECOND_VALUE:
        return myBeans.get(1);

    case THIRD_VALUE:
        return myBeans.get(2);

    default: // In case of an unexpected modification of the enum
        return myBeans.get(0);

    // I know, case FIRST_VALUE is useless but it's for being clearer
}
目前,绑定基本上是这样完成的:

public enum ExternalEnum
{
    FIRST_VALUE("FirstValue"),
    SECOND_VALUE("SecondValue"),
    THIRD_VALUE("ThirdValue");

    // Constructor and getter
}
Map<Integer, MyBean> myBeans = retrieveFromDBThroughDAO();
ExternalEnum eeValue = fetchValueFromSomewhere();

switch (eeValue)
{
    case FIRST_VALUE:
        return myBeans.get(0);

    case SECOND_VALUE:
        return myBeans.get(1);

    case THIRD_VALUE:
        return myBeans.get(2);

    default: // In case of an unexpected modification of the enum
        return myBeans.get(0);

    // I know, case FIRST_VALUE is useless but it's for being clearer
}
并以一般的方式阅读

我的问题 你觉得我的解决方案怎么样?你认为可以从其他方面改进吗


谢谢大家。

您可以创建一个自定义类,该类由retrieveFromDBThroughDAO()返回,该类将处理枚举,映射方式仍然可以通过外部配置完成


但这将集中所有关于如何将枚举映射到该类的ID的更改。

这不应该在代码审查中吗?哦,对不起,还是有点累…因为MyBean来自db,我不知道如何向枚举添加直接依赖项