Java中接口的switch语句

tdu*_*zik 1 java enums switch-statement

我有一个接口FailureReason,我想创建一个实现这个接口的枚举。所以我有这样的事情:

public enum RemoveSalonFailureReason implements FailureReason {
    REASON_1, REASON_2;
}
Run Code Online (Sandbox Code Playgroud)

然后我想以这种方式使用它:

public class SalonManager {

    public String removeSalon(Long salonId) {
        // some code
        FailureReason failureReason = result.getFailureReason();
        switch (failureReason):
            case REASON_1:
                // do sth
                break;
            case REASON_2:
                // do sth
                break;
    }

}
Run Code Online (Sandbox Code Playgroud)

但是我收到一个错误“不能转换为整数”。那么我该怎么做呢?是否可以进行FailureReason枚举?像enum FailureReason extends EnumEnum<FailureReason> failureReason = result.getFailureReason()

Old*_*eon 5

一个case语句不能在这里使用,因为不是所有的FailureReason都是enum秒。

备择方案:

  1. 使用Map<FailureReason,Thing>,查找并执行您的Thing.
  2. 只使用一个enum
  3. 做好enum工作 - 示例如下。

示例3-

interface FailureReason {

    public void doMyThing();
}

public enum RemoveSalonFailureReason implements FailureReason {
    REASON_1 {
        @Override
        public void doMyThing() {
            System.out.println("You failed!!!");
        }
    },
    REASON_2 {
        @Override
        public void doMyThing() {
            System.out.println("You failed AGAIN!!!");
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

请不要求助于铸造。