欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

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使用Scanner类进行控制台输入实现方法

本文标题:java 自定义可继承枚举Enum的案例

本文地址:http://www.codeinn.net/misctech/85056.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有