Java基础Demo -- enum枚举

枚举的小示例:

更简单的对枚举的一种认识:我们自己写了个类,这个类里面有数据成员,方法成员。不过我们不用new来实例化这个类,而是enum定义的时候,就定义好了几个枚举值常量,每个常量都是这个类的对象,而且是public static final修饰的对象。每个对象呢,有自己的数据成员私有副本,还可以实现出不同版本的方法成员。
 

import java.util.*;

enum CompanyEnum { 

    SF("顺丰速运", 1001), YTO("圆通速递", 1002), STO("申通物流", 1003), YD("韵达快运", 1004), YZPY("中国邮政", 1005); 
	
    private CompanyEnum(String company, int code) { 
	this.company = company; 
	this.code = code; 
    } 
	
    private String company; // 公司名称 
    private int code;	    // 公司编码
	
    public String getCompany() { return company; } 
    public void setCompany(String company) { this.company = company; } 
    public int getCode() { return code; } 
    public void setCode(int code) { this.code = code; } 
	
    //根据物流公司名字获取对应的编码 
    public static int getCodeByCompany(String company) { 
	for (CompanyEnum c : CompanyEnum.values()) 
            if (c.getCompany().equals(company.trim())) 
		return c.code;
	return 0; 
    } 

    //根据物流公司编码获取对应的名字 
    public static String getCompanyByCode(int code) { 
	for (CompanyEnum c : CompanyEnum.values()) 
	    if (c.getCode() == code) 
		return c.getCompany(); 
	return null; 
    } 
}

enum Grade3{ //枚举类型Grade,每个常量对象都有自己独特的行为
    A{
	public void template(){ System.out.println("A"); }
    },
    B{
	public void template(){ System.out.println("B"); }
    };

    public abstract void template();
}

enum Grade2{ //枚举类型Grade 无构造函数
    Perfect,Good,Common,Bad; //拥有的四个常量,默认是public static final
}

enum Grade{ //枚举类型Grade 有构造函数
    Perfect(),Good(),Common(),Bad();

    private int score; //每种枚举常量值的分数
    Grade(int score){ this.score = score;}
    Grade(){}

    public int getScore(){ return score; }
    public void setScore(int score){
	this.score = score;
    }
}


public class EnumDemo
{
    public static void main(String[] args) {

    /**
     * 有构造函数的枚举,每一个常量都是该枚举的一个对象
     */
    Grade.Perfect.setScore(90); 
    System.out.println(Grade.Perfect.getScore()); //输出90
    Grade.Good.setScore(80);
    System.out.println(Grade.Good.getScore());    //输出80
    Grade.Common.setScore(60);
    System.out.println(Grade.Common.getScore());  //输出60
    Grade.Bad.setScore(50);
    System.out.println(Grade.Bad.getScore());     //输出50

    /**
     * 枚举的常用方法
     */
    System.out.println( Grade.Bad.ordinal());
    System.out.println( Grade.Good.compareTo(Grade.Bad));
    System.out.println( Grade.Good.equals(Grade2.Good));

    Grade3 g3 = Grade3.A;
    g3.template();

    /**
     * EnumSet的使用
     */ 
    EnumSet<CompanyEnum> companySet = EnumSet.allOf(CompanyEnum.class); 
    for (CompanyEnum company:companySet) 
	System.out.println(company.getCode() + ":" + company.getCompany());  
	 
    /**
     * EnumMap的使用
     */ 
    EnumMap<CompanyEnum, String> companyMap = new EnumMap(CompanyEnum.class); 
    companyMap.put(CompanyEnum.SF, "顺丰map"); 
    companyMap.put(CompanyEnum.YTO, "圆通map"); 

    Iterator<Map.Entry<CompanyEnum, String>> iter = companyMap.entrySet().iterator(); 
    while(iter.hasNext()){ 
	Map.Entry<CompanyEnum, String> entry = iter.next(); 
	System.out.println(entry.getKey().name() + ":" + entry.getValue()); 
    }
}
}

猜你喜欢

转载自blog.csdn.net/mmlz00/article/details/85227746