浏览 2676 次
锁定老帖子 主题:自定义类型安全的枚举
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-01-18
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; } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-01-18
直接用中文? 这个可读性是不是好的过头了?
|
|
返回顶楼 | |
发表时间:2008-01-23
呵呵,我也是觉得这个设计是很烂的呀,这个是公司的其他程序员搞的,我是看到中文觉得很不爽,才做了这个类似enum的类,仔细一想,其实jdk5的枚举,也应该是这么搞的吧。
|
|
返回顶楼 | |
发表时间:2008-01-24
more effective java那本书里面似乎专门有将自定义类型安全的枚举,上面的这个代码似乎是照抄后增加了一些额外的方法而已。
不过jdk5中的enum,呵呵,的确是类似实现,实际也就是一个class了,用起来比较方便而已,实质是一样的。 |
|
返回顶楼 | |
发表时间:2008-01-31
引用 more effective java那本书里面似乎专门有将自定义类型安全的枚举 有时间把more effective java那本书好好看看。。。。 |
|
返回顶楼 | |