读书人

枚举部类的基类

发布时间: 2012-10-26 10:30:58 作者: rapoo

枚举类型的基类

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

?

?

读书人网 >编程

热点推荐