如何在java中重构这个Enum

时间:2017-03-15 21:52:48

标签: java enums refactoring

我有一个枚举来保持规则的结果:

enum Outcome{
    PASSED,
    FAILED;
}

现在我需要添加原因,为什么规则失败了我返回的结果。我怎么能重构这个?

2 个答案:

答案 0 :(得分:1)

编辑:我更喜欢@JBNizet的答案,所以这是一个实现

public class Outcome {
    public enum OutcomeOptions {
        PASSED, FAILED;
    }
    private final OutcomeOptions outcome;
    private final String message;
    public Outcome(OutcomeOptions outcome, String message) {
        this.outcome = outcome;
        this.message = message;
    }
    public OutcomeOptions getOutcome() {
        return outcome;
    }
    public String getMessage() {
        return message;
    }
}

答案 1 :(得分:0)

如果"结果"您返回的必须是枚举类型,并且您在编译时知道可能发生故障的所有原因,然后您可以为每种类型定义故障标记。对于动态故障消息,只能在运行时知道的故障原因,我会使用Jay Schauer / JBNizet的注释解决方案,并为成员创建一个单独的类,用于通过/失败令牌和消息字符串。 / p>

enum Outcome {
    PASS("Congratulations"),
    FAIL_BLANK("too many blank stares"),
    FAIL_RED("too many Red Herrings"),
    FAIL_NET("network issues");

    private String msg;
    private Outcome(String message) {
       msg = message;
    }

    public String getMsg() { return msg; }
}