java emun 的别样用法,可以学习下,

package com.zwc.www.test;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class OperateEnum {
 //first emun
 enum PeopleTypeOne{RED,YELLOW,BLACK}; 
 
 //second emun
 public enum PeopleTypeTwo{
  RED("a","#111111"),
  YELLOW("b","#222222"),
  BLACK("c","#333333");
  
  private String value1;

注意:这里的定义可以定义为final  完全可以编译通过,可以运行,好像这是java的一个bug
  private String value2;

 

注意这里的构造方法,应该与你上面的定义,保持一致,

还有:不能定义为public ,只能是默认的权限,或者是private
  PeopleTypeTwo(String value1,String value2){
   this.value1 = value1;
   this.value2 = value2;
  }

注意:这里的方法的定义,完全是为了程序外面的访问,如下面main函数的调用,

这里,其实完全可以用一个get方法,直接返回对应的值,如  #222222  ,但是为了测试这里是否支持map,所以,就用了map,下面的例子,也调用了map,具体可以,参考下面的代码,
  public Map<String,String> getMap(){
   Map<String,String> map = new HashMap<String,String>();
   map.put(this.value1, this.value2);
   return map;
  }
 }
 
 public static void main(String[] args) {
  //first emun
  PeopleTypeOne p1 = PeopleTypeOne.BLACK;
  System.out.println("tradition:" + (p1.ordinal() + 1));
  
  //second emun
  PeopleTypeTwo p2 = PeopleTypeTwo.RED;
  Map<String,String> map = p2.getMap();
  Iterator<String> i = p2.getMap().keySet().iterator();
  while(i.hasNext()){
   String key = i.next();
   String value = map.get(key);
   System.out.println("key=" + key + "   value=" + value);
  }
 }

}

你可能感兴趣的:(java emun 的别样用法,可以学习下,)