Java分享筆記:自定義枚舉類 使用enum關鍵字定義枚舉類

  在JDK1.5之前沒有enum關鍵字,如果想使用枚舉類,程序員需要根據Java語言的規則自行設計。從JDK1.5開始,Java語言添加了enum關鍵字,可以通過該關鍵字方便地定義枚舉類。這種枚舉類有自己的程序編寫規則,并且具有一些特殊方法。

  下面是筆者分別針對自定義枚舉類enum枚舉類的程序設計。

?

[1] 自定義枚舉類

 1 /*-------------------------
 2 JDK1.5之前通過自行設計程序,來自定義枚舉類
 3 下面以季節為例自定義枚舉類
 4 --------------------------*/
 5 package pack01;
 6 
 7 public class Season {
 8     public static void main(String[] args) {
 9 
10         FourSeasons spring = FourSeasons.SPRING;
11         FourSeasons winter = FourSeasons.WINTER;
12         
13         System.out.println( spring.getName() );
14         System.out.println( spring.toString() );
15         System.out.println();
16         System.out.println( winter.getName() );
17         System.out.println( winter.toString() );
18     }
19 }
20 
21 // 定義表示季節的枚舉類,共有4個內部對象
22 class FourSeasons {
23 
24     // 定義類的屬性:私有的,終態的,在構造器中進行初始化
25     private final String name;
26 
27     // 將構造器私有化,使構造器不能在類的外部被使用
28     private FourSeasons(String name) {
29         this.name = name;
30     }
31 
32     // get方法返回屬性值
33     public String getName() {
34         return name;
35     }
36 
37     // 覆蓋toString方法,設置默認打印值
38     public String toString() {
39         return "This is " + name;
40     }
41 
42     // 在類的內部創建對象
43     public static final FourSeasons SPRING = new FourSeasons("spring");
44     public static final FourSeasons SUMMER = new FourSeasons("summer");
45     public static final FourSeasons AUTUMN = new FourSeasons("autumn");
46     public static final FourSeasons WINTER = new FourSeasons("winter");
47 }

?

[2] 使用enum關鍵字定義枚舉類

 1 /*-------------------------
 2 JDK1.5開始可以通過enum關鍵字來定義枚舉類
 3 使用enum關鍵字定義枚舉類與自定義枚舉類的程序編寫不同之處:
 4 ....//將關鍵字class用關鍵字enum替換
 5 ....//必須在類體的一開始創建內部的對象,并遵循一定的書寫規則
 6 ....//枚舉類有兩個常用的方法:
 7 ........//values():將枚舉類中的所有對象以數組的方式返回
 8 ........//valueOf(String arg0):將類中的某一個對象的名字以字符串的形式作為參數傳入,返回該對象
 9 ....//枚舉類可以實現接口,覆蓋接口中的抽象方法既可以寫在枚舉類的類體中,也可以寫在對象后的花括號中
10 ........//若寫在了對象后的花括號中,則該方法不再是所有對象公共的。不同對象調用同一方法時,可以得到不同的效果。
11 
12 下面以季節為例使用enum關鍵字定義枚舉類
13 --------------------------*/
14 package pack02;
15 
16 public class Season {
17     public static void main(String[] args) {
18         
19         //測試枚舉類中的values()方法
20         FourSeasons[] seasons = FourSeasons.values();
21         for( int i=0; i<seasons.length; ++i ) {
22             System.out.println( seasons[i].getName() );
23         }
24         System.out.println();
25         
26         //測試枚舉類中的valueOf()方法,創建春天的對象
27         FourSeasons spring = FourSeasons.valueOf("SPRING");
28         System.out.println( "valueOf(\"SPRING\"): " + spring.getName() + '\n' );
29         
30         //創建夏,秋,冬的對象
31         FourSeasons summer = FourSeasons.SUMMER;
32         FourSeasons autumn = FourSeasons.AUTUMN;
33         FourSeasons winter = FourSeasons.WINTER;
34         spring.printWords();
35         summer.printWords();
36         autumn.printWords();
37         winter.printWords();
38         //上面調用接口中的方法打印出來的結果,春天與其他三個季節是不同的,因為SPRING對象重新覆蓋了接口中的方法
39     }
40 }
41 
42 //定義一個接口,讓枚舉類來實現該接口
43 interface Inter{
44     void printWords();
45 }
46 
47 // 定義表示季節的枚舉類,共有4個內部對象
48 enum FourSeasons implements Inter { //使用enum關鍵字,并實現上述接口
49 
50     //必須在類體中的一開始創建對象,對象之間用逗號分開,并且要遵循一定的書寫規則
51     SPRING("spring"){
52         public void printWords() {//在創建對象時可以單獨重寫接口中的方法,這時類體中的重寫方法對于該對象將不再起作用
53             System.out.println("This is spring");
54         }
55     },
56     SUMMER("summer"),
57     AUTUMN("autumn"),
58     WINTER("winter");
59     
60     // 定義類的屬性:私有的,終態的,在構造器中進行初始化
61     private final String name;
62 
63     // 將構造器私有化,使構造器不能在類的外部被使用
64     private FourSeasons(String name) {
65         this.name = name;
66     }
67     
68     // get方法返回屬性值
69     public String getName() {
70         return name;
71     }
72     
73     // 重寫接口中的抽象方法
74     public void printWords() {
75         System.out.println("There are four different seasons.");
76     }
77 }

?

注:希望與各位讀者相互交流,共同學習進步。

轉載于:https://www.cnblogs.com/EarthPioneer/p/9378181.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538151.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538151.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538151.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

html5做咖啡網頁素材,HTML5/CSS3咖啡品類切換動畫

CSS語言&#xff1a;CSSSCSS確定body {background-color: #FB9F89;}.container {position: absolute;top: 30px;left: 200px;}.saucer {position: absolute;top: 50px;left: 40px;width: 200px;height: 200px;border-radius: 100%;background-color: #FFF;box-shadow: 5px 1px …

汽車和山羊問題matlab仿真_Matlab----無人機集群對抗中的關鍵問題和仿真平臺(開發中)案例...

無人機集群對抗&#xff0c;是自動駕駛中路徑規劃的新問題&#xff0c;并且連續兩年出現在最近的中國大學生數學建模競賽中。可見&#xff0c;這是一個急需解決的數學問題&#xff08;體現了官方的軍事戰略意志&#xff09;&#xff0c;同時&#xff0c;還沒有成熟解決方案的問…

使用durid的ConfigFilter對數據庫密碼加密

原文連接&#xff1a;http://blog.csdn.net/aixiaoyang168/article/details/49930513 ----------------------------------------------------------------------- 對于大部分程序員來說&#xff0c;數據庫的信息&#xff0c;如用戶名&#xff0c;密碼等信息一般都寫到配置文件…

序(不知道是什么時候的模擬題)

序 【問題背景】 zhx 給他的妹子們排序。 【問題描述】 \(zhx\) 有 \(N\) 個妹子&#xff0c; 他對第 \(i\) 個妹子的好感度為\(a_i\), 且所有\(a_i\),兩兩不相等。 現在 \(N\) 個妹子隨意站成一排&#xff0c; 他要將她們根據好感度從小到大排序。 他使用的是冒泡排序算法&…

html寫用戶導入,用戶基本信息錄入.html

&#xfeff;用戶基本信息錄入$axure.utils.getTransparentGifPath function() { return resources/images/transparent.gif; };$axure.utils.getOtherPath function() { return resources/Other.html; };$axure.utils.getReloadPath function() { return resources/reload.…

adg oracle 架構_技術棧數據中心有了ADG架構就高枕無憂了?你還需要做這一步!...

技術棧數據中心有了ADG架構&#xff0c;就高枕無憂了&#xff1f;你還需要做這一步&#xff01;如果把數據中心建設比喻成西天取經&#xff0c;那旅途上的九九八十一難就是我們不得不躲閃、跨越、攻堅的堡壘。即日起&#xff0c;希嘉推出“技術棧”板塊&#xff0c;集結數據治理…

String length must be a multiple of four.

今天在整理2013年的工作時的一個項目&#xff0c;修改了數據庫連接&#xff0c;初始化數據庫&#xff0c;部署運行報錯&#xff0c;主要原因是阿里巴巴druid報錯&#xff0c;導致DataSource初始化失敗。 druid報錯日志&#xff1a; Caused by: java.lang.IllegalArgumentExce…

論文筆記:Person Re-identification with Deep Similarity-Guided Graph Neural Network

Person Re-identification with Deep Similarity-Guided Graph Neural Network 2018-07-27 17:41:45 Paper&#xff1a; https://128.84.21.199/pdf/1807.09975.pdf 本文將 Graph Neural Network (GNN) 應用到 person re-ID 的任務中&#xff0c;用于 model 不同 prob-gallery …

CGLib動態代理原理及實現

原文連接&#xff1a;http://songbo-mail-126-com.iteye.com/blog/968792 ------------------------------------------------------------------------ JDK實現動態代理需要實現類通過接口定義業務方法&#xff0c;對于沒有接口的類&#xff0c;如何實現動態代理呢&#xff…

微型計算機的硬件組成中ssd硬盤通常是指,2015年計算機一級msoffice選擇題121道及答案...

31、通常&#xff0c;在微機中標明的P4或奔騰4是指( D )A、產品型號B、主頻C、微機名稱D、微處理器型號32、以平均無故障時間(MTBF)&#xff0c;用于描述計算機的( A )A、可靠性B、可維護性C、性能價格比D、以上答案都不對33、以平均修復時間(MTTR)&#xff0c;用于描述計算機的…

雙曲函數奇偶性_基本初等函數之奇偶性(強基系列42)

基本初等函數之奇偶性(強基系列4-2)開卷有益初等函數是由冪函數(power function)、指數函數(exponential function)、對數函數(logarithmic function)、三角函數(trigonometric function)、反三角函數(inverse trigonometric function)與常數經過有限次的有理運算(加、減、乘、…

Caused by: Parent package is not defined: json-default - [unknown location]

原文連接&#xff1a;http://blog.csdn.net/bebested/article/details/52627890 ------------------------------------------------------------------------------------------- Unable to load configuration. - [unknown location] at com.opensymphony.xwork2.config.Co…

【window】git安裝教程

相關鏈接&#xff1a;https://blog.csdn.net/nly19900820/article/details/73379854 作者&#xff1a;smile.轉角 QQ&#xff1a;493177502轉載于:https://www.cnblogs.com/websmile/p/9384060.html

html文件打開系統錯誤,win7打開word提示“無法打開文件Normal因為內容有錯誤”的兩種解決方法...

win7系統打開Word的時候&#xff0c;彈出提示“無法打開文件Normal.dotm,因為內容有錯誤”&#xff0c;為什么會出現錯誤提示呢&#xff1f;小編就按照錯誤提示尋找文件&#xff0c;最后發現是Word自動生成的模板Normal出錯了&#xff0c;知道故障原因后&#xff0c;接下去教程…

超鏈接跳轉到action使用哪個方法_管道疏通劑哪個牌子好 管道疏通機使用方法有哪些...

平時大家不用的水或者一些物品&#xff0c;在處理的時候應該都會倒到下水道之中&#xff0c;而下水道確實具備著這一種效果&#xff0c;但很多時候&#xff0c;下水道往往會因為口比較小&#xff0c;而被一些物品所堵塞&#xff0c;這樣一來&#xff0c;影響上其實會非常大&…

linux學習-將seafile啟動腳本設置為開機啟動服務

有時候&#xff0c;我們安裝的linux軟件和程序不是通過yum安裝&#xff0c;而是通過編譯或者其他方式安裝。有時需要將程序設置為服務&#xff0c;達到開機啟動的目的。我在公有云的與服務器上搭建了seafile網盤&#xff0c;當我重啟云服務器的時候&#xff0c;seafile的程序不…

物理借助傳感器用計算機測速度,用打點計時器測速度教案_物理_教學設計_人教版...

第四節、實驗&#xff1a;用打點計時器測速度西安中學&#xff1a;張衛崗郵編&#xff1a;710021【教材版本】人民教育出版社【設計理念】實驗是物理學習的基礎&#xff0c;通過自主探究、問題研究&#xff0c;結合速度概念的科學認識&#xff0c;體驗科學研究與生活實際的聯系…

Failed to load or instantiate TagLibraryValidator class: org.apache.taglibs.standard.tlv.JstlFmtTLV

原因&#xff1a; 1、缺包。如缺 standard-1.1.2.jar servlet-api-2.4.jar jstl-1.1.2.jar 2、包重復。最可能是 servlet-api-2.4.jar jsp-api-2.0.jar 與Tomcat lib 下的沖突。刪掉 web-inf/lib下的

中文整合包_案例 | 美研市場營銷和整合營銷專業1620Fall 580+申請實例(含MS+PHD)...

關注“留學壹周刊”&#xff0c;回復專業名稱&#xff0c;如“金融”&#xff0c;可以自由查詢相關資料介紹本篇微信主要包括如下內容&#xff1a;580美研市場營銷和整合營銷專業16-20Fall申請實例&#xff0c;包括6個文件&#xff1a;1、MS項目申請實例2、PHD項目申請實例3、成…

關于HttpClient上傳中文亂碼的解決辦法

使用過HttpClient的人都知道可以通過addTextBody方法來添加要上傳的文本信息&#xff0c;但是&#xff0c;如果要上傳中文的話&#xff0c;或還有中文名稱的文件會出現亂碼的問題&#xff0c;解決辦法其實很簡單&#xff1a; 第一步&#xff1a;設置MultipartEntityBuilder的編…