枚举类型的基类
1: OptionObject类
?
import java.io.Serializable;
public abstract interface OptionObject extends Serializable
{
? public abstract String getValue();
? public abstract String getText();
}
?
?
2:
?
import??? OptionObject;
/*******************************************************************************
?* 枚举类型的基类
?******************************************************************************/
public class BaseType implements java.io.Serializable, Comparable, OptionObject
{
?? /** 枚举类型主键 */
?? private String code;
?? /** 枚举类型主题 */
?? private String text;
?? /** 枚举类型备注 */
?? private String remark;
?? protected BaseType(String code, String text)
?? {
????? this.code = code;
????? this.text = text;
????? this.remark = null;
?? }
?? protected BaseType(String code, String text, String remark)
?? {
????? this.code = code;
????? this.text = text;
????? this.remark = remark;
?? }
?? public String getCode()
?? {
????? return code;
?? }
?? /****************************************************************************
??? * 实现OptionObject接口中定义的方法
??? * @return String
??? ***************************************************************************/
?? public String getValue()
?? {
????? return this.code;
?? }
?? /****************************************************************************
??? * 实现OptionObject接口中定义的方法
??? * @return String
??? ***************************************************************************/
?? public String getText()
?? {
????? return text;
?? }
?? /****************************************************************************
??? * 实现Comparable接口中定义的方法
??? * @param o Object
??? * @return int
??? ***************************************************************************/
?? public int compareTo(Object o)
?? {
????? BaseType type = (BaseType) o;
????? return getCode().compareTo(type.getCode());
?? }
?? /****************************************************************************
??? * 覆盖equals方法
??? * @param o Object
??? * @return boolean
??? ***************************************************************************/
?? public boolean equals(Object o)
?? {
????? if (o == this)
????? {
???????? return true;
????? }
????? if (o instanceof BaseType)
????? {
???????? BaseType type = (BaseType) o;
???????? return type.getCode() == this.getCode();
????? }
????? else
????? {
???????? return false;
????? }
?? }
?? /****************************************************************************
??? * 覆盖hashCode方法
??? * @return int
??? ***************************************************************************/
?? public int hashCode()
?? {
????? return code.hashCode();
?? }
?? /****************************************************************************
??? * 覆盖toString方法
??? * @return String
??? ***************************************************************************/
?? public String toString()
?? {
????? return "code=" + code + " , " + "text=" + text;
?? }
?? public String getRemark()
?? {
????? return remark;
?? }
??
}
?
3:如何使用
?
public class WorkDayMode extends BaseType {
??? /** 对象集合 */
??? private static java.util.TreeMap map = new java.util.TreeMap();
?
??? private static java.util.List list = new java.util.ArrayList();
?
??? private WorkDayMode(int code, String text) {
??????? super(String.valueOf(code), text, null);
??????? map.put(getCode(), this);
??????? list.add(this);
??? }
?
??? /**
???? * 根据编号取合同状态枚举类型
???? * @param code 枚举类型主键,范围0~4、-1、9
???? * @return 合同状态枚举类型实例
???? */
??? public static WorkDayMode getType(int code) {
??????? return (WorkDayMode) map.get(String.valueOf(code));
??? }
?
??? /**
???? * 取合同状态枚举类型列表
???? * @return 合同状态枚举类型实例集合
???? */
??? public static WorkDayMode[] getList() {
??????? WorkDayMode[] ret = new WorkDayMode[list.size()];
??????? list.toArray(ret);???????????????????? //list中的
??????? return ret;
??? }
?
??? /** 0-->返回当前正在工作的开机日期,若没有开机,返回null; */
??? public static WorkDayMode CURRENT_WORKDAY = new WorkDayMode(0, "返回当前正在工作的开机日期");
??? /** 4-->返回最后一个开机日期,若从未开机,返回null; */
??? public static WorkDayMode LAST_WORKDAY = new WorkDayMode(4, "返回最后一个开机日期");
??? /** 5-->返回最后一个关机日期,若从未关机,返回null; */
??? public static WorkDayMode LAST_CLOSEDAY = new WorkDayMode(5, "返回最后一个关机日期");
??? /**
???? * 取索引值,对应数据库中参数的类型
???? */
??? public Integer getKey() {
??????? return Integer.valueOf(this.getCode());
??? }
}
?
?