替代 Java 枚举

Rob*_*son 2 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

我现在需要添加我需要动态的自定义列。我意识到我无法使枚举动态化。什么是替代方案?

Old*_*eon 6

如果您调整Column以实现interfaceand 而不是在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;
    }

}
Run Code Online (Sandbox Code Playgroud)