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

public enum RemoveSalonFailureReason implements FailureReason {
    REASON_1, REASON_2;
}


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

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;
    }

}


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

最佳答案

在这里不能使用case语句,因为并非所有FailureReason都是enum

备择方案:


使用Map<FailureReason,Thing>,查找并执行Thing
仅使用一个enum
使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!!!");
        }
    };
}


请不要诉诸铸造。

08-16 23:05