自定义类型安全的枚举

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;

}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值