论坛首页 入门技术论坛

自定义类型安全的枚举

浏览 2676 次
该帖已经被评为新手帖
作者 正文
   发表时间:2008-01-18  
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;

}

}

   发表时间:2008-01-18  
直接用中文? 这个可读性是不是好的过头了?
0 请登录后投票
   发表时间:2008-01-23  
呵呵,我也是觉得这个设计是很烂的呀,这个是公司的其他程序员搞的,我是看到中文觉得很不爽,才做了这个类似enum的类,仔细一想,其实jdk5的枚举,也应该是这么搞的吧。
0 请登录后投票
   发表时间:2008-01-24  
more effective java那本书里面似乎专门有将自定义类型安全的枚举,上面的这个代码似乎是照抄后增加了一些额外的方法而已。

不过jdk5中的enum,呵呵,的确是类似实现,实际也就是一个class了,用起来比较方便而已,实质是一样的。
0 请登录后投票
   发表时间:2008-01-31  
引用
more effective java那本书里面似乎专门有将自定义类型安全的枚举


有时间把more effective java那本书好好看看。。。。
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics