我有以下处理代码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?有没有办法在枚举中设置默认值?
1 回答

莫回无
TA贡献1865条经验 获得超7个赞
您可以在EligibilityType
地图中拥有所有可能的值
public static final Map<String, EligibilityType> ALL_MAP = Arrays.stream(values()) .collect(Collectors.toMap(Enum::toString, Function.identity()));
那么你可以优雅地处理默认情况
EligibilityType.ALL_MAP.getOrDefault(someString, EligibilityType.DEFAULT)
添加回答
举报
0/150
提交
取消