java 自定义可继承枚举Enum的案例
时间:2021-03-21 10:29:40|栏目: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() {
}
}
二、实际继承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字符串压缩解压示例
栏 目:JAVA代码
本文标题:java 自定义可继承枚举Enum的案例
本文地址:http://www.codeinn.net/misctech/85056.html


阅读排行
- 1Java Swing组件BoxLayout布局用法示例
- 2java中-jar 与nohup的对比
- 3Java邮件发送程序(可以同时发给多个地址、可以带附件)
- 4Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常
- 5Java中自定义异常详解及实例代码
- 6深入理解Java中的克隆
- 7java读取excel文件的两种方法
- 8解析SpringSecurity+JWT认证流程实现
- 9spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)
- 10深入解析java虚拟机




