Java enum

来源:互联网 发布:台湾2016进出口数据 编辑:程序博客网 时间:2024/06/03 10:43
</pre><p><span style="font-size:24px">java :</span></p><p></p><pre code_snippet_id="1921703" snippet_file_name="blog_20161010_2_5805003" name="code" class="html"><span style="font-size:14px;">package com.xf.allEnum;import com.xf.util.EnumUtil;import com.xf.util.GeneralEnum;public enum TeacherTypeEnum implements GeneralEnum<String> {ClassTeacher("ClassTeacher","班主任"),CourseTeacher("CourseTeacher","任课老师");private final String id;private final String name;TeacherTypeEnum(String id,String name) {this.id = id;this.name = name;}@Overridepublic String getId() {return id;}@Overridepublic String getName() {return name;}public static String getNameById(String id) {return EnumUtil.getById(id, TeacherTypeEnum.class).getName();}}</span><span style="font-size:24px;"></span>
GeneralEnum:
package com.xf.util;/** * 用于枚举需要实现的接口 *  * @author badqiu */public interface GeneralEnum <K>{/** 得到枚举对应的id,一般保存这个id至数据库 */    public K getId();    /** 得到枚举描述 */    public String getName();    /** 枚举名称 */    public String name();}

EnumUtil:

<span style="font-size:14px;">package com.xf.util;import java.util.Arrays;import java.util.LinkedHashMap;import java.util.List;import org.apache.commons.lang.StringUtils;/** * 枚举工具类 */@SuppressWarnings("all")public class EnumUtil {    /**     * 将GeneralEnum.getId()作为Key,GeneralEnum.getName()作为value,存放在Map中并返回     * @param <T>     * @param values     * @return      * @return      * @return      * @return     */    public static List<? extends GeneralEnum> toList(Class<? extends GeneralEnum> enumClass) {    return Arrays.asList(enumClass.getEnumConstants());             }    /**     * 将GeneralEnum.getId()作为Key,GeneralEnum.getName()作为value,存放在Map中并返回     * @param <T>     * @param values     * @return     */    public static <T extends GeneralEnum> LinkedHashMap toMap(Class<? extends GeneralEnum> enumClass) {        return toMap(enumClass.getEnumConstants());    }        /**     * 将GeneralEnum.getId()作为Key,GeneralEnum.getName()作为value,存放在Map中并返回     * @param <T>     * @param values     * @return     */    public static  <T extends GeneralEnum> LinkedHashMap toMap(T[] values) {        LinkedHashMap map = new LinkedHashMap();        for(GeneralEnum item : values) {            map.put(item.getId(), item.getName());        }        return map;    }        public static <T extends GeneralEnum<K>,K> K getId(T enumValue) {        if(enumValue == null) return null;        return enumValue.getId();    }        public static <T extends GeneralEnum> String getName(T enumValue) {        if(enumValue == null) return null;        return enumValue.getName();    }   //   public static <T extends GeneralEnum> String getName(T enumValue) {//       if(enumValue == null) return null;//       return enumValue.getName();//   }////   public static <T extends Enum> String getName(T enumValue) {//       if(enumValue == null) return null;//       return enumValue.name();//   }   /**    * 根据id查找得到Enum    * @param id    * @param values    * @return    */   public static <T extends GeneralEnum> T getById(Object id,Class<? extends GeneralEnum> enumClass) {       return (T)getById(id, enumClass.getEnumConstants());   }      public static String getNameById(Object id,Class<? extends GeneralEnum> enumClass) {       return getById(id, enumClass.getEnumConstants()).getName();   }      /**    * 根据id查找得到Enum    * @param id    * @param values    * @return    */   public static <T extends GeneralEnum> T getById(Object id,T[] values) {       if(id == null) return null;       if(id instanceof String && StringUtils.isBlank((String)id)) return null;              for (T item : values) {            if (item.getId().equals(id)) {                return item;            }       }       return null;   }   /**    * 根据id得到Enum,找不到则抛异常.如果id为null或者是空字符串,则返回null    * @throws IllegalArgumentException 根据id得到Enum,找不到则抛异常    */   public static <T extends GeneralEnum> T getRequiredById(Object id,Class<? extends GeneralEnum> enumClass) {       return (T)getRequiredById(id, enumClass.getEnumConstants());   }      /**    * 根据id得到Enum,找不到则抛异常.如果id为null或者是空字符串,则返回null    * @param <T>    * @param id    * @param values    * @return    * @throws IllegalArgumentException 根据id得到Enum,找不到则抛异常    */   public static <T extends GeneralEnum> T getRequiredById(Object id,T[] values) throws IllegalArgumentException {       if(id == null) return null;       if(id instanceof String && StringUtils.isBlank((String)id)) return null;              GeneralEnum v = getById(id,values);       if(v == null) {           if(values.length > 0) {               String className = values[0].getClass().getName();               throw new IllegalArgumentException("not found Enum:"+className+" value by id:"+id);           }else {               throw new IllegalArgumentException("not found Enum by id:"+id);           }       }       return (T)v;   }   }</span>

jsp:
<span style="font-size:14px;"><%@ page import="com.xf.allEnum.TeacherTypeEnum"%>  </span>

<span style="font-size:14px;"><select name="grade">   <% for(TeacherTypeEnum at:TeacherTypeEnum.values()){            out.println("<option value="+at.getId()+">"+at.getName()+"</option>");                }%>  </select></span>



0 0
原创粉丝点击