猿问

使用 ENUM 将默认值设置为不合格

我有以下处理代码EligibilityType:


public enum EligibilityType {


    E (EligibilityTypeEnum.ELIGIBLE),

    I (EligibilityTypeEnum.INELIGIBLE);


    private final EligibilityTypeEnum eligibilityTypeEnum;


    private EligibilityType(EligibilityTypeEnum eligibilityTypeEnum) {

        this.eligibilityTypeEnum = eligibilityTypeEnum;

    }


    public EligibilityTypeEnum toEligibilityTypeEnum() {

        return eligibilityTypeEnum;

    }

}

我了解到,所有没有价值“E”的东西都应该设置为EligibilityTypeEnum.INELIGIBLE.


这就是我所说的:


...

List<Workout> workouts = workoutResults.getWorkout();

for(int i = 0; i< workouts.size(); ++i) {

    ...

    stin.getWorkouts().get(i).setEligibilityType(EligibilityType.valueOf(workouts.get(i).getRecommendation()).toEligibilityTypeEnum());

    ...

}

现在,如果workouts.get(i).getRecommendation()返回“C”,代码就会爆炸。


有没有人看到任何其他方式来实现这一点除了try-catch?


有没有办法在枚举中设置默认值?


神不在的星期二
浏览 113回答 1
1回答

莫回无

您可以在EligibilityType地图中拥有所有可能的值public&nbsp;static&nbsp;final&nbsp;Map<String,&nbsp;EligibilityType>&nbsp;ALL_MAP&nbsp;=&nbsp;Arrays.stream(values()) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.collect(Collectors.toMap(Enum::toString,&nbsp;Function.identity()));那么你可以优雅地处理默认情况EligibilityType.ALL_MAP.getOrDefault(someString,&nbsp;EligibilityType.DEFAULT)
随时随地看视频慕课网APP

相关分类

Java
我要回答