java 自定義可繼承枚舉Enum的案例
更新時(shí)間:2021年02月24日 09:38:59 作者:eulers
這篇文章主要介紹了java 自定義可繼承枚舉Enum的案例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
一、定義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 //測試正常
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
關(guān)于如何搭建CAS服務(wù)并將CAS項(xiàng)目導(dǎo)入IDEA
這篇文章主要介紹了關(guān)于如何搭建CAS服務(wù)并將CAS項(xiàng)目導(dǎo)入IDEA的問題,文中提供了詳細(xì)的圖文講解,需要的朋友可以參考下,如果有錯(cuò)誤的地方還請指正2023-03-03
在java List中進(jìn)行模糊查詢的實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄趈ava List中進(jìn)行模糊查詢的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-11-11
Spring細(xì)數(shù)兩種代理模式之靜態(tài)代理和動態(tài)代理概念及使用
代理是一種設(shè)計(jì)模式,提供了對目標(biāo)對象另外的訪問方式,即通過代理對象訪問目標(biāo)對象??梢圆恍薷哪繕?biāo)對象,對目標(biāo)對象功能進(jìn)行拓展。在我們學(xué)習(xí)Spring的時(shí)候就會發(fā)現(xiàn),AOP(面向切面編程)的底層就是代理2023-02-02
POI讀取excel簡介_動力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了POI讀取excel簡介,詳細(xì)的介紹了什么是Apache POI和組件,有興趣的可以了解了解一下2017-08-08

