java枚举类

枚举是一种规范它规范了参数的形式,这样就可以不用考虑类型的不匹配并且显式的替代了int型参数可能带来的模糊概念 枚举像一个类,又像一个数组。

Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class,    它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口。    当我们在声明一个enum类型时,我们应该注意到enum类型有如下的一些特征。     

1.它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例。     

2.所有枚举值都是public    ,    static    ,    final的。注意这一点只是针对于枚举值,我们可以和在普通类里面定义    变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的修饰符。     

3.Enum默认实现了java.lang.Comparable接口。     

4.Enum覆载了了toString方法,因此我们如果调用Color.Blue.toString()默认返回字符串”Blue”.     

5.Enum提供了一个valueOf方法,这个方法和toString方法是相对应的。调用valueOf(“Blue”)将返回Color.Blue.因此我们在自己重写toString方法的时候就要注意到这一点,一把来说应该相对应地重写valueOf方法。     

6.Enum还提供了values方法,这个方法使你能够方便的遍历所有的枚举值。     

7.Enum还有一个oridinal的方法,这个方法返回枚举值在枚举类种的顺序,这个顺序根据枚举值声明的顺序而定,这里Color.Red.ordinal()返回0。 

例子:

案例一:定义一些单号前缀,使用 InvLogRefType.ReceivingOrder.getValue()  即可得到。

public enum InvLogRefType 
{
	/**
	 * 入库单
	 */
	ReceivingOrder("RO"),
	
	/**
	 * 订单
	 */
	DeliveryOrder("DO"),
	
	/**
	 * 拣货单
	 */
	PickingList("PL"),
	
	/**
	 * 库存盘点
	 */
	StockCount("SC"),
	/**
	 * 出库单
	 */
	ShippingOrder("SO"),
	
	/**
	 * 库存初始化
	 */
	INIT("Init");
	
	private String value;
	
	private InvLogRefType(String value)
	{
		this.value = value;
	}
	
	public String getValue()
	{
		return value;
	}
	
	public void setValue(String value)
	{
		this.value = value;
	}
}

案例二:定义key-value格式数据,再定义个根据key获取value的方法,通过

country = Market2Country.getCountryByMarket(market); 调用

/**
 *  维护Market和国家的对应关系配置类
 */
public enum Market2Country {

  // 维护Market对Country映射表
  DATA1("MKT-AU","AU"),
  DATA2("MKT-CAN","CA"),
  DATA3("MKT-CN","CN"),
  DATA4("MKT-DE","DE"),
  DATA5("MKT-DE-OTTO","DE"),
  DATA6("MKT-ES","ES"),
  DATA7("MKT-FR","FR"),
  DATA8("MKT-IN","IN"),
  DATA9("MKT-IT","IT"),
  DATA10("MKT-JP","JP"),
  DATA11("MKT-MX","MX"),
  DATA12("MKT-NEWEGG","US"),
  DATA13("MKT-UK","UK"),
  DATA14("MKT-US","US"),

  // 维护Company对Country映射表
  DATA15("Amazon-CAN-STK","CA"),
  DATA16("Amazon-CN-LYT","CN"),
  DATA17("Amazon-DE-ZBT","DE"),
  DATA18("Amazon-US-CMTL","US"),
  DATA19("Amazon-US-D2G","US"),
  DATA20("Amazon-US-DH","US"),
  DATA21("Amazon-US-DM01","US"),
  DATA22("Amazon-US-SH","US"),
  DATA23("Amazon-US-STK","US"),
  DATA24("Amazon2-CAN-STK","CA"),
  DATA25("Amazon2-US-STK","US"),
  DATA26("Ebay-DE-HOOTOO","DE"),
  DATA27("Ebay-DE-Trading","DE"),
  DATA28("FBA-CAN-STK","CA"),
  DATA29("FBA-CN-LYT","CN"),
  DATA30("FBA-DE-PP1","PP1-DE"),
  DATA31("FBA-DE-ZBT","DE"),
  DATA32("FBA-ES-NBE","ES"),
  DATA33("FBA-ES-PP1","PP1-ES"),
  DATA34("FBA-ES-SKL","ES"),
  DATA35("FBA-ES-STK","ES"),
  DATA36("FBA-FR-DH","FR"),
  DATA37("FBA-FR-NBE","FR"),
  DATA38("FBA-FR-PP1","PP1-FR"),
  DATA39("FBA-FR-SKL","FR"),
  DATA40("FBA-FR-STK","FR"),
  DATA41("FBA-IT-NBE","IT"),
  DATA42("FBA-IT-PP1","PP1-IT"),
  DATA43("FBA-IT-SKL","IT"),
  DATA44("FBA-IT-STK","IT"),
  DATA45("FBA-JP-JB","JP"),
  DATA46("FBA-JP-NBD","JP"),
  DATA47("FBA-JP-PP1","PP1-JP"),
  DATA48("FBA-JP-STK","JP"),
  DATA49("FBA-UK-DH","UK"),
  DATA50("FBA-UK-NBE","UK"),
  DATA51("FBA-UK-PP1","UK"),
  DATA52("FBA-UK-SKL","UK"),
  DATA53("FBA-UK-STK","UK"),
  DATA54("FBA-US-CMTL","US"),
  DATA55("FBA-US-D2G","US"),
  DATA56("FBA-US-DH","US"),
  DATA57("FBA-US-DM01","US"),
  DATA58("FBA-US-PP1","US"),
  DATA59("FBA-US-SH","US"),
  DATA60("FBA-US-STK","US"),
  DATA61("FBA2-CAN-STK","CA"),
  DATA62("FBA2-US-STK","US"),
  DATA63("FBC-FR-SKL","FR"),
  DATA64("NEWEGG-ProTrend","US"),
  DATA65("Newegg-US-Sunvalley","US"),
  DATA66("Newegg-US-Wholesale","US"),
  DATA67("OF-EU-ZBT","OF-EU"),
  DATA68("OF-JP-NBD","OF-JP"),
  DATA69("OF-US-STK","US"),
  DATA70("Online-WalMart-US","US"),
  DATA71("Online-Wholesale-CA","CA"),
  DATA72("Online-Wholesale-DE","DE"),
  DATA73("Online-Wholesale-ES","ES"),
  DATA74("Online-Wholesale-FR","FR"),
  DATA75("Online-Wholesale-IT","IT"),
  DATA76("Online-Wholesale-JP","JP"),
  DATA77("Other-Hold-DE","DE"),
  DATA78("Other-hootoo_de","DE"),
  DATA79("Other-Yatego-DE","DE"),
  DATA80("OTTO-DE-ZBT","OF-EU"),
  DATA81("RKT-JP-NBD","JP"),
  DATA82("FBA-US-MRC","US"),
  DATA83("Amazon-US-MRC","US");

  private final String market;
  private final String country;
  private static final Map<String, String> mMap = Collections.unmodifiableMap(initializeMapping());

  Market2Country(String market, String country) {
    this.market = market;
    this.country = country;
  }

  public String getMarket() {
    return market;
  }
  public String getCountry() {
    return country;
  }

  public static String getCountryByMarket(String market) {
    if (null == mMap) {
      initializeMapping();
    }
    if (mMap.containsKey(market)) {
      return mMap.get(market);
    }
    return null;
  }

  private static Map<String,String> initializeMapping() {
    Map<String,String> mMap = new HashMap<String, String>();
    for (Market2Country s : Market2Country.values()) {
      mMap.put(s.market, s.country);
    }
    return mMap;
  }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值