Java中枚舉的使用方法詳解
枚舉介紹(enumeration)
枚舉:把具體的對(duì)象一個(gè)個(gè)的列舉出來(lái)的類,稱為枚舉類。
枚舉對(duì)應(yīng)的是一組常量的集合枚舉屬于一種特殊的類,里面只包含一組有限的特點(diǎn)的對(duì)象。
解釋:比如我們想聲明一組季節(jié)的集合,那這里面最多有四種,即春夏秋冬,不允許有其他的季節(jié),那為了實(shí)現(xiàn)這種限制,體現(xiàn)出季節(jié)是固定的四個(gè)對(duì)象,我們可以使用枚舉。
枚舉的實(shí)現(xiàn)方式
自定義類實(shí)現(xiàn)枚舉
1、將構(gòu)造器私有化(私有化即private),目的是為了防止,直接new對(duì)象
2、去掉set相關(guān)的方法,防止屬性被修改
3、在類的內(nèi)部創(chuàng)建固定的對(duì)象;
4、優(yōu)化,添加final修飾符,實(shí)現(xiàn)底層優(yōu)化。
- 構(gòu)造器私有化(private)
- 本類內(nèi)部創(chuàng)建一組對(duì)象[春、夏、秋、冬]
- 對(duì)外暴露對(duì)象(通過(guò)為對(duì)象添加public final static修飾符)
- 可以提供get方法,不能提供set方法(不允許進(jìn)行屬性的修改)
package com.zhangch.enum_; public class Enumeration02 { public static void main(String[] args) { Season spring = Season.SPRING; System.out.println(spring); } } class Season{ private String name; private String desc; // 3、通過(guò)static final 方法,對(duì)外暴露對(duì)象 public static final Season SPRING = new Season("春", "陽(yáng)光明媚"); public static final Season SUMMER = new Season("夏", "炎熱"); // 1、構(gòu)造器私有化 private Season(String name, String desc) { this.name = name; this.desc = desc; } // 2、取消set方法,防止對(duì)屬性進(jìn)行修改 public String getDesc() { return desc; } public String getName() { return name; } @Override public String toString() { return "Season{" + "name='" + name + '\'' + ", desc='" + desc + '\'' + '}'; } }
enum關(guān)鍵字實(shí)現(xiàn)枚舉
1、將類的聲明關(guān)鍵字從 class 替換為 enum;
2、聲明枚舉常量對(duì)象的格式為: SPRING(“春天”, “溫暖”) → 常量名(參數(shù)列表);
其實(shí)enum相當(dāng)于講對(duì)象的聲明簡(jiǎn)化了:
SUMMER(“夏天”, “炎熱”); 等同于:public static final Season SUMMER = new Season(“夏”, “炎熱”);
3、如果聲明多個(gè)枚舉常量(對(duì)象),則使用 逗號(hào) 進(jìn)行隔開(kāi);
4、如果使用enum實(shí)現(xiàn)枚舉,要求將定義的常量對(duì)象,寫在對(duì)象最前面。
package com.zhangch.enum_; /** * @author zhangch * @version 1.0 */ public class Enumeration01 { public static void main(String[] args) { System.out.println(Season.SPRING); } } // 演示自定義枚舉 enum Season{ // 1、使用enum關(guān)鍵字替換class // 2、聲明枚舉常量對(duì)象的方式: SPRING("夏天", "炎熱") --> 常量名(參數(shù)列表) // 3、如果有多個(gè)常量(對(duì)象),使用逗號(hào)隔開(kāi) // 4、如果使用enum實(shí)現(xiàn)枚舉,要求將定義的常量對(duì)象,寫在對(duì)象前面。 SPRING("春天", "溫暖"), SUMMER("夏天", "炎熱"); private String name; private String desc; private Season(String name, String desc) { this.name = name; this.desc = desc; } public String getName() { return name; } public String getDesc() { return desc; } @Override public String toString() { return "Season{" + "name='" + name + '\'' + ", desc='" + desc + '\'' + '}'; } }
注意細(xì)節(jié)
1、當(dāng)我們使用enum關(guān)鍵字修飾類的時(shí)候,默認(rèn)匯集成Enum類,而且是一個(gè)final類,可通過(guò)javap進(jìn)行反編譯(class文件到j(luò)ava文件)來(lái)進(jìn)行查看 (javac為編譯java文件到class文件)
2、當(dāng)我們使用 無(wú)參構(gòu)造器 創(chuàng)建 枚舉常量對(duì)象 時(shí),則實(shí)參列表和小括號(hào)均可以省略;
3、當(dāng)有多個(gè)枚舉對(duì)象時(shí),使用 逗號(hào) 進(jìn)行分隔, 最后使用 分號(hào) 進(jìn)行結(jié)尾
4、枚舉對(duì)象必須放在枚舉類的行首。
enum常用方法說(shuō)明
1、使用關(guān)鍵字enum時(shí),會(huì)隱式的繼承Enum類,這樣我們就可以使用Enum里面的方法
valueOf: 將枚舉常量的名稱 作為參數(shù) 傳遞給枚舉對(duì)象 ,找到后會(huì)返回與參數(shù)匹配的枚舉常量。
Season value = Season.valueOf("SPRING");System.out.println(value);
ordinal: 得到當(dāng)前枚舉常量的編號(hào),默認(rèn)從 0 開(kāi)始;即方法values返回的下標(biāo)。
name:得到當(dāng)前枚舉常量的名稱,建議使用 toString() 方法
compareTo:比較兩個(gè)枚舉常量的大小,使用枚舉常量的編號(hào)相減的方式獲取對(duì)應(yīng)的大小。如果為0,則證明相等。
values: 返回當(dāng)前枚舉類中的所有枚舉常量;
使用注意
使用enum關(guān)鍵字后,該類就不能再繼承其他類了(單繼承機(jī)制),但是,仍然可以使用接口繼承
到此這篇關(guān)于Java中枚舉的使用方法詳解的文章就介紹到這了,更多相關(guān)Java的枚舉內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談Java 類中各成分加載順序和內(nèi)存中的存放位置
下面小編就為大家?guī)?lái)一篇淺談Java 類中各成分加載順序和內(nèi)存中的存放位置。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02Java泛型枚舉Annotation接口詳細(xì)解讀與Eclipse發(fā)展
這篇文章主要給大家介紹了關(guān)于Java中方法使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-08-08SpringBoot?2.7.18?集成?Mybatis?Plus?+?Druid的實(shí)例詳解
Mybatis和MybatisPlus都是流行的持久層框架,MybatisPlus在Mybatis基礎(chǔ)上增加了更多便捷的功能,如自動(dòng)CRUD、分頁(yè)插件等,文章還提到了Entity、Mapper、Service、Controller等組件的基本使用方法,為開(kāi)發(fā)者提供了一套完整的集成方案2024-10-10mybatis打印SQL,并顯示參數(shù)的實(shí)例
這篇文章主要介紹了mybatis打印SQL,并顯示參數(shù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12