java 自定義可繼承枚舉Enum的案例
更新時間:2021年02月24日 09:38:59 作者:eulers
這篇文章主要介紹了java 自定義可繼承枚舉Enum的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
一、定義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() {
}
}
二、實際繼承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ù)繼承枚舉,進行枚舉分類。
補充:Java中自定義枚舉(Enum)項的值,可設置為指定的值
一、代碼
package base.lang;
/**
* ClassName: StateEnum
* @Description: TODO
* @author fuming
* @date 2016年11月27日
*/
public enum StateEnum
{
//添加枚舉的指定常量
online(10),
offline(20);
//必須增加一個構造函數(shù),變量,得到該變量的值
private int mState=0;
private StateEnum(int value)
{
mState=value;
}
/**
* @return 枚舉變量實際返回值
*/
public int getState()
{
return mState;
}
}
二、示例
//enum
StateEnum orderState=StateEnum.offline;
//orderState=StateEnum.online;
System.out.println("state="+ orderState.getState());
三、打印結果
state=20 //測試正常
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關文章
Spring細數(shù)兩種代理模式之靜態(tài)代理和動態(tài)代理概念及使用
代理是一種設計模式,提供了對目標對象另外的訪問方式,即通過代理對象訪問目標對象??梢圆恍薷哪繕藢ο螅瑢δ繕藢ο蠊δ苓M行拓展。在我們學習Spring的時候就會發(fā)現(xiàn),AOP(面向切面編程)的底層就是代理2023-02-02
POI讀取excel簡介_動力節(jié)點Java學院整理
這篇文章主要介紹了POI讀取excel簡介,詳細的介紹了什么是Apache POI和組件,有興趣的可以了解了解一下2017-08-08

