java 自定義可繼承枚舉Enum的案例
public class AbstractEnum { private static final Map<String, AbstractEnum> nameEnumMap = new ConcurrentHashMap<>(); @Getter protected String name; protected AbstractEnum () { } protected AbstractEnum(String name) { this.name = name; if (!nameEnumMap.containsKey(name)) { nameEnumMap.put(name, this); } } public boolean equals(AbstractEnum abstractEnum) { return this.name == null || abstractEnum == null ? false : this.name.equals(abstractEnum.getName()); } public String toString() { return this.name; } public static AbstractEnum valueOf(String name) { if (name == null) throw new NullPointerException('Name is null'); AbstractEnum result = nameEnumMap.get(name); if (result != null) { return result; } throw new IllegalArgumentException( 'No enum constant exists, name is.' + name); } public static void init() { } }二、實(shí)際繼承enum,與enum使用方法一致
public class TypeEnum extends AbstractEnum { private static final Map<String, TypeEnum> nameEnumMap = new ConcurrentHashMap<>(); protected TypeEnum(String name) { super(name); if (!nameEnumMap.containsKey(name)) { nameEnumMap.put(name, this); } } public static TypeEnum valueOf(String name) { if (name == null) throw new NullPointerException('Name is null'); TypeEnum result = nameEnumMap.get(name); if (result != null) { return result; } throw new IllegalArgumentException( 'No enum constant exists, name is.' + name); } public static final TypeEnum TYPE_ONE = new TypeEnum('TYPE_ONE');}三、可繼續(xù)繼承枚舉,進(jìn)行枚舉分類。
補(bǔ)充:Java中自定義枚舉(Enum)項(xiàng)的值,可設(shè)置為指定的值
一、代碼package base.lang;/** * ClassName: StateEnum * @Description: TODO * @author fuming * @date 2016年11月27日 */public enum StateEnum{//添加枚舉的指定常量online(10),offline(20);//必須增加一個(gè)構(gòu)造函數(shù),變量,得到該變量的值private int mState=0;private StateEnum(int value){mState=value;}/*** @return 枚舉變量實(shí)際返回值*/ public int getState() { return mState; } }二、示例
//enum StateEnum orderState=StateEnum.offline; //orderState=StateEnum.online; System.out.println('state='+ orderState.getState()); 三、打印結(jié)果
state=20 //測(cè)試正常
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章:
1. asp(vbs)Rs.Open和Conn.Execute的詳解和區(qū)別及&H0001的說明2. PHP設(shè)計(jì)模式中工廠模式深入詳解3. CSS hack用法案例詳解4. ThinkPHP5實(shí)現(xiàn)JWT Token認(rèn)證的過程(親測(cè)可用)5. 用css截取字符的幾種方法詳解(css排版隱藏溢出文本)6. asp中response.write("中文")或者js中文亂碼問題7. JSP數(shù)據(jù)交互實(shí)現(xiàn)過程解析8. PHP session反序列化漏洞超詳細(xì)講解9. ASP 信息提示函數(shù)并作返回或者轉(zhuǎn)向10. ASP+ajax實(shí)現(xiàn)頂一下、踩一下同支持與反對(duì)的實(shí)現(xiàn)代碼
