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());
}
}