欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java枚举

程序员文章站 2022-06-07 16:32:10
...
枚举的出现主要是为了解决变量过度循环问题。
下面将通过2个枚举类AnimalOne,AnimalTwo来详细说明其用法:
下面代码主要是3个类,其实AnimalOne和AnimalTwo为枚举类,AnimalEnumTest为测试类,演示了日常工作所出现的情况。
/*
 * 普通的枚举类只是用来存储变量,
 * 由于枚举也是类,所以聚类类的相关特性,
 * 需要注意的是枚举类的构造方法为private,
 * 在添加非变量时候,最后一个变量后面需要放分号且变量在类的最上面。
 */
public enum AnimalOne {
	
    cat("jiafei",1),
    dog("toni",2),
    mouse("miki",3);
    
     // 成员变量
    private String name;
    private int index;
    
    //构造函数只能是private
    private AnimalOne(String name ,int index){
    	this.name=name;
    	this.index=index;
    }
    /*
     *  根据index获取name,由于构造函数是private的,所以无法通过引用访问,
     *  可以适当的 设置成static来直接访问,否则只能通过传递
     */
    public static String getAnimalNameByIndex(int index){
    	//遍历枚举
       for(AnimalOne a:AnimalOne.values()){
    		 if(a.getIndex()==index){
    			 return a.getName();
    		 }
    	}
    	return null;
    }
    //get set 方法
    public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}

	public int getIndex() {
		return index;
	}

	public void setIndex(int index) {
		this.index = index;
	}

	@Override
	public String toString() {
		
		return index+":"+name;
	}


/*
 * 实现带有抽象方法的枚举
 * 由于类型是anum所以必须要实现抽象方法
 */
public enum AnimalTwo{
	
	cat {
		@Override
		public String getColor() {
			
			return "red";
		}
	},dog {
		@Override
		public String getColor() {
			
			return "green";
		}
	},mouse {
		@Override
		public String getColor() {
			
			return "yellow";
		}
	};

  public abstract String getColor();
  
}

/*
 * Animal test
 */
public class AnimalEnumTest {

	public static void main(String[] args) {
		
		AnimalEnumTest t=new AnimalEnumTest();
		
		t.checkAnimalOne(AnimalOne.dog);
		//测试Animal内部方法
		System.out.println("--Animal one--总共:"+AnimalOne.values().length+"个");
		
		System.out.println("--Animal one--"+AnimalOne.getAnimalNameByIndex(2));
      
		System.out.println("--Animal two--"+AnimalTwo.cat.getColor());
	}
    
	//最常用的方式
	public void checkAnimalOne(AnimalOne a){
		
		switch(a){
			case cat:
				System.out.println("cat~~miaomiao~~");
				break;  
			case dog:
				System.out.println("dog~~wangwang~~");
			    break;
			case mouse:
				System.out.println("mouse~~jiji~~");
			    break;
		}
	}
	
}