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