项目中有些需求需要对数据进行筛选,或者对数据进行转换。如果数据很多,再使用判断语句来进行就难以满足需求,或者不断的判断烦不胜烦。使用Enum可以实现对大量数据的筛选,也可以对数据进行转换。
举个栗子
1、筛选
判断数据是否在某个范围内
public enum FilterDemoEnum { fav{ @Override public String getFormat() { return "/fav"; } }, browseHistory{ @Override public String getFormat() { return "/browseHistory"; } }, VIP{ @Override public String getFormat() { return "/promoteCode/VIP"; } }; public abstract String getFormat(); public static boolean getFilterUri(String format) { for (FilterDemoEnum enums : FilterDemoEnum.values()) { if (enums.getFormat().equals(format)) return true; } return false; } }
2、数据转换
public enum UserGradeEnum { v0{ @Override public int getNumGrade(){ return 0; } @Override public String getVGrade(){ return "V0"; } @Override public String getLevelName(){ return "普通成员"; } }, v1{ @Override public int getNumGrade(){ return 1; } @Override public String getVGrade(){ return "V1"; } @Override public String getLevelName(){ return "银卡会员"; } }, v2{ @Override public int getNumGrade(){ return 2; } @Override public String getVGrade(){ return "V2"; } @Override public String getLevelName(){ return "金卡会员"; } }, v3{ @Override public int getNumGrade(){ return 3; } @Override public String getVGrade(){ return "V3"; } @Override public String getLevelName(){ return "白金卡会员"; } }, v4{ @Override public int getNumGrade(){ return 4; } @Override public String getVGrade(){ return "V4"; } @Override public String getLevelName(){ return "黑金卡会员"; } }; public abstract int getNumGrade(); public abstract String getVGrade(); public abstract String getLevelName(); /** * 根据用户等级名称,获取对应的等级数字 * @param context * @param levelName * @return */ public static int getNumGradeByLevelName(Context context, String levelName){ if (MyCenterUtil.getUserId(context) == null){ return 0; } if (levelName == null){ levelName = MyCenterUtil.getUserLevelName(context); } for (UserGradeEnum gradeEnum : UserGradeEnum.values()){ if (gradeEnum.getLevelName().equalsIgnoreCase(levelName)){ return gradeEnum.getNumGrade(); } } return 0; } /** * 根据用户等级“VX",转换为用户等级名称保存到本地 * @param context * @param vGrade */ public static void saveLevelNameByVGrade(Context context, String vGrade){ if (MyCenterUtil.strIsNull(vGrade)){ return; } for (UserGradeEnum gradeEnum : UserGradeEnum.values()){ if (gradeEnum.getVGrade().equalsIgnoreCase(vGrade)){ MyCenterUtil.saveUserLevelName(context, gradeEnum.getLevelName()); } } } }
OK,这样就完成了!避免了大量的重复代码,心情都变好了~