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"); }
三、可继续继承枚举,进行枚举分类。
补充:Java中自定义枚举(Enum)项的值,可设置为指定的值
一、代码
package base.lang; /** * ClassName: StateEnum * @Description: TODO * @author fuming * @date 2016年11月27日 */ public enum StateEnum { //添加枚举的指定常量 online(10), offline(20); //必须增加一个构造函数,变量,得到该变量的值 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 //测试正常
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。
相关文章
Java网络编程之URL+URLconnection使用方法示例
这篇文章主要介绍了Java网络编程之URL+URLconnection使用方法示例,还是比较不错的,这里分享给大家,供需要的朋友参考。2017-11-11使用SpringBoot根据配置注入接口的不同实现类(代码演示)
使用springboot开发时经常用到@Autowired和@Resource进行依赖注入,但是当我们一个接口对应多个不同的实现类的时候如果不进行一下配置项目启动时就会报错,那么怎么根据不同的需求注入不同的类型呢,感兴趣的朋友一起看看吧2022-06-06
最新评论