枚举类型一般属性的值为常量,不可动态的变化。
由于系统需要,配置信息是写在数量库中的,在加载系统时,需要读入配置信息去填充枚举类型属性。
故想出这种办法,共享之。
/************************************************* Copyright (C), 2008-2009, Sunsoft Team Tech. Co., Ltd. File name: TradeState.java Author: sunbeam Version: 1.0 Date: 2008-11-5 Description: Others: Function List: History: *************************************************/ package com.sztelecom.vbao.enumer; import com.sztelecom.vbao.exception.ServiceException; import com.sztelecom.vbao.service.CommonParmeterService; /** * 交易状态 * @author sunbeam * @version 1.0 * @Date 2008-11-5 */ public enum TradeState { WAIT_PAY("TRADE_STATE_WAIT_PAY"), // 等待付款 HAS_CREATED("TRADE_STATE_HAS_CREATED"), // 交易已创建 WAIT_SEND_GOODS("TRADE_STATE_WAIT_SEND_GOODS"), // 等待卖家发货 WAIT_CFM_GOODS("TRADE_STATE_WAIT_CFM_GOODS"), // 等待买家确认收货 FINISHED("TRADE_STATE_FINISHED"), // 交易已完成 CLOSED("TRADE_STATE_CLOSED"), // 交易已关闭 WAIT_DEAL_REFUND("TRADE_STATE_WAIT_DEAL_REFUND");// 等待处理退款 private String status; static String wait_pay; static String has_created; static String wait_send_goods; static String wait_cfm_goods; static String finished; static String closed; static String wait_deal_refund; private TradeState(String status) { this.status = status; } public void init(CommonParmeterService cps) throws ServiceException { if (wait_pay == null) wait_pay = cps.queryTradeState(WAIT_PAY.getStatus()); if (has_created == null) has_created = cps.queryTradeState(HAS_CREATED.getStatus()); if (wait_send_goods == null) wait_send_goods = cps.queryTradeState(WAIT_SEND_GOODS.getStatus()); if (wait_cfm_goods == null) wait_cfm_goods = cps.queryTradeState(WAIT_CFM_GOODS.getStatus()); if (finished == null) finished = cps.queryTradeState(FINISHED.getStatus()); if (closed == null) closed = cps.queryTradeState(CLOSED.getStatus()); if (wait_deal_refund == null) wait_deal_refund = cps.queryTradeState(WAIT_DEAL_REFUND.getStatus()); } public String toString() { super.toString(); switch (this) { case WAIT_PAY: return wait_pay; case HAS_CREATED: return has_created; case WAIT_SEND_GOODS: return wait_send_goods; case WAIT_CFM_GOODS: return wait_cfm_goods; case FINISHED: return finished; case CLOSED: return closed; case WAIT_DEAL_REFUND: return wait_deal_refund; default: return ""; } } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } }