자바 사용자 정의

1.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() {
 }
 
}
2.실제 계승 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");
}
3.매 거 를 계속 계승 하여 매 거 분 류 를 할 수 있 습 니 다.
추가:자바 에서 매 거 진(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()); 
3.결과 인쇄

state=20  //    
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.만약 잘못 이 있 거나 완전히 고려 하지 않 은 부분 이 있다 면 아낌없이 가르침 을 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기