Mil*_*ous 7 java enums design-patterns enumeration
有没有办法编写可以扩展的枚举.我有几种方法可以随时提供给我的枚举.例如,我对我的数据库字段使用枚举.我在数据库中包含实际的字段名称.
public enum ORDERFIELDS
{
OrderID("Order_ID");
private String FieldName;
private ORDERFIELDS(String fname)
{
this.FieldName = fname;
}
public String getFieldName()
{
return FieldName;
}
}
Run Code Online (Sandbox Code Playgroud)
Dón*_*nal 10
如果我理解正确,你想做的是这样的:
public abstract class DatabaseField {
private String fieldName;
private DatabaseField(String fieldName) {
this.fieldName = fieldName;
}
public String getFieldName() {
return fieldName;
}
}
Run Code Online (Sandbox Code Playgroud)
然后定义你的枚举来扩展这个类.但是,遗憾的是枚举不能扩展类,但它可以实现一个接口,所以你现在可以做的最好的事情是定义一个包含getFieldName()方法的接口,并让你所有的枚举实现这个接口.
但是,这意味着您必须在所有枚举中复制此方法(以及任何其他方法)的实现.在这个问题中有一些关于如何最小化这种重复的建议.
抽象枚举可能非常有用(目前不允许).但是,如果您想在Sun中为某个人添加游戏来添加它,则存在一个提案和原型:
http://freddy33.blogspot.com/2007/11/abstract-enum-ricky-carlson-way.html
Sun RFE:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6570766