Java Enum的替代品

时间:2014-10-29 11:23:09

标签: java

我有一个Enum来处理表中的列。它正在生产中。

public enum Column {

    NAME("m_Name", "Name", "TEXT"), ADDRESS("m_Address", "Address", "TEXT");

    private String value;
    private String label;
    private String sortType;

    private Column(String value, String label, String sortType) {
        this.setValue(value);
        this.setLabel(label);
        this.setSortType(sortType);
    }
}

我现在需要添加我需要动态的自定义列。我意识到我不能让枚举动态。有什么替代方案?

1 个答案:

答案 0 :(得分:4)

如果您调整Column以实施interface而不是在其他地方使用Column,请使用interface,然后您可以使用普通类来增加动态列。

interface DbColumn {

    String getLabel();

    String getValue();
}

public enum Column implements DbColumn {

    NAME("m_Name", "Name"), ADDRESS("m_Address", "Address");

    private final String value;
    private final String label;

    private Column(String value, String label) {
        this.value = value;
        this.label = label;
    }

    @Override
    public String getLabel() {
        return label;
    }

    @Override
    public String getValue() {
        return value;
    }
}

public class DynamicColumn implements DbColumn {

    private final String value;
    private final String label;

    private DynamicColumn(String value, String label) {
        this.value = value;
        this.label = label;
    }

    @Override
    public String getLabel() {
        return label;
    }

    @Override
    public String getValue() {
        return value;
    }

}