Java基礎Demo -- enum列舉
阿新 • • 發佈:2018-12-24
列舉的小示例:
更簡單的對列舉的一種認識:我們自己寫了個類,這個類裡面有資料成員,方法成員。不過我們不用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()); } } }