自定义类型安全的枚举

package com.goodhope.tradingapp.domain;



import java.io.Serializable;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;



import com.goodhope.tradingapp.util.O;



public class SettlementStatus implements Serializable{



private static final long serialVersionUID = -6168031969764821429L;



public static final SettlementStatus NORMAL_STATUS = new SettlementStatus("结算中");



public static final SettlementStatus COMPLETE_STATUS = new SettlementStatus("完成");



public static final SettlementStatus FREEZE_STATUS = new SettlementStatus("已冻结");



public static final SettlementStatus DRAFT_STATUS = new SettlementStatus("处理中");



public static final SettlementStatus CLAIMSED_STATUS = new SettlementStatus("已理赔");



private String name;



private static final Map<String, SettlementStatus> VALUES = new HashMap<String, SettlementStatus>();



private static final int HASH_CODE_SEED = 91;



static {

VALUES.put("结算中", NORMAL_STATUS);

VALUES.put("完成", COMPLETE_STATUS);

VALUES.put("已冻结", FREEZE_STATUS);

VALUES.put("处理中", DRAFT_STATUS);

VALUES.put("已理赔", CLAIMSED_STATUS);

}



private SettlementStatus(String name) {

this.name = name;

}



public static SettlementStatus valueOf(String name) {

return VALUES.get(name);

}



public String getName() {

return name;

}



@Override

public boolean equals(Object obj) {

if (obj == null) {

return false;

}

if (!(obj instanceof SettlementStatus)) {

return false;

}

return ((SettlementStatus) obj).getName().equals(this.name);

}



@Override

public int hashCode() {

return HASH_CODE_SEED + O.safeHashCode(name);

}



static List<SettlementStatus> values() {

List<SettlementStatus> returnValue = new ArrayList<SettlementStatus>();

for (String key : VALUES.keySet()) {

returnValue.add(VALUES.get(key));

}

return returnValue;

}



@Override

public String toString() {

return name;

}

}

你可能感兴趣的:(java)