Ali p9 le enseña el caso de la enumeración heredable personalizada de Java Enum en tres minutos

Este artículo presenta principalmente el caso de la enumeración heredable personalizada de Java Enum, que tiene un buen valor de referencia, y espero que sea útil para todos. Sigamos al editor para echar un vistazo

Uno, define la clase abstracta 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() {
    
    
 }
  
}

En segundo lugar, la herencia real de enum, de acuerdo con el uso de 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");
}

3. La enumeración se puede seguir heredando para la clasificación de enumeración.
Suplemento: el valor de un elemento de enumeración personalizado (Enum) en Java se puede establecer en un valor especificado

Uno, el código

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;
 } 
}

Dos, ejemplo

//enum
StateEnum orderState=StateEnum.offline;
//orderState=StateEnum.online;
System.out.println("state="+ orderState.getState());

Tres, imprimir resultados

state=20  //测试正常

Lo anterior es una experiencia personal, espero poder darle una referencia y espero que pueda apoyar al editor. Si hay errores o no se consideran por completo, no dude en aclararme.

Supongo que te gusta

Origin blog.csdn.net/dcj19980805/article/details/115246222
Recomendado
Clasificación