Java中枚舉的使用方法詳解
枚舉介紹(enumeration)
枚舉:把具體的對象一個個的列舉出來的類,稱為枚舉類。
枚舉對應的是一組常量的集合枚舉屬于一種特殊的類,里面只包含一組有限的特點的對象。
解釋:比如我們想聲明一組季節(jié)的集合,那這里面最多有四種,即春夏秋冬,不允許有其他的季節(jié),那為了實現(xiàn)這種限制,體現(xiàn)出季節(jié)是固定的四個對象,我們可以使用枚舉。

枚舉的實現(xiàn)方式
自定義類實現(xiàn)枚舉
1、將構造器私有化(私有化即private),目的是為了防止,直接new對象
2、去掉set相關的方法,防止屬性被修改
3、在類的內(nèi)部創(chuàng)建固定的對象;
4、優(yōu)化,添加final修飾符,實現(xiàn)底層優(yōu)化。

- 構造器私有化(private)
- 本類內(nèi)部創(chuàng)建一組對象[春、夏、秋、冬]
- 對外暴露對象(通過為對象添加public final static修飾符)
- 可以提供get方法,不能提供set方法(不允許進行屬性的修改)
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、通過static final 方法,對外暴露對象
public static final Season SPRING = new Season("春", "陽光明媚");
public static final Season SUMMER = new Season("夏", "炎熱");
// 1、構造器私有化
private Season(String name, String desc) {
this.name = name;
this.desc = desc;
}
// 2、取消set方法,防止對屬性進行修改
public String getDesc() {
return desc;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "Season{" +
"name='" + name + '\'' +
", desc='" + desc + '\'' +
'}';
}
}enum關鍵字實現(xiàn)枚舉
1、將類的聲明關鍵字從 class 替換為 enum;
2、聲明枚舉常量對象的格式為: SPRING(“春天”, “溫暖”) → 常量名(參數(shù)列表);
其實enum相當于講對象的聲明簡化了:
SUMMER(“夏天”, “炎熱”); 等同于:public static final Season SUMMER = new Season(“夏”, “炎熱”);

3、如果聲明多個枚舉常量(對象),則使用 逗號 進行隔開;
4、如果使用enum實現(xiàn)枚舉,要求將定義的常量對象,寫在對象最前面。
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關鍵字替換class
// 2、聲明枚舉常量對象的方式: SPRING("夏天", "炎熱") --> 常量名(參數(shù)列表)
// 3、如果有多個常量(對象),使用逗號隔開
// 4、如果使用enum實現(xiàn)枚舉,要求將定義的常量對象,寫在對象前面。
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 + '\'' +
'}';
}
}注意細節(jié)
1、當我們使用enum關鍵字修飾類的時候,默認匯集成Enum類,而且是一個final類,可通過javap進行反編譯(class文件到java文件)來進行查看 (javac為編譯java文件到class文件)

2、當我們使用 無參構造器 創(chuàng)建 枚舉常量對象 時,則實參列表和小括號均可以省略;

3、當有多個枚舉對象時,使用 逗號 進行分隔, 最后使用 分號 進行結尾
4、枚舉對象必須放在枚舉類的行首。
enum常用方法說明
1、使用關鍵字enum時,會隱式的繼承Enum類,這樣我們就可以使用Enum里面的方法

valueOf: 將枚舉常量的名稱 作為參數(shù) 傳遞給枚舉對象 ,找到后會返回與參數(shù)匹配的枚舉常量。
Season value = Season.valueOf("SPRING");System.out.println(value);
ordinal: 得到當前枚舉常量的編號,默認從 0 開始;即方法values返回的下標。
name:得到當前枚舉常量的名稱,建議使用 toString() 方法
compareTo:比較兩個枚舉常量的大小,使用枚舉常量的編號相減的方式獲取對應的大小。如果為0,則證明相等。
values: 返回當前枚舉類中的所有枚舉常量;
使用注意
使用enum關鍵字后,該類就不能再繼承其他類了(單繼承機制),但是,仍然可以使用接口繼承
到此這篇關于Java中枚舉的使用方法詳解的文章就介紹到這了,更多相關Java的枚舉內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
淺談Java 類中各成分加載順序和內(nèi)存中的存放位置
下面小編就為大家?guī)硪黄獪\談Java 類中各成分加載順序和內(nèi)存中的存放位置。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02
Java泛型枚舉Annotation接口詳細解讀與Eclipse發(fā)展
這篇文章主要給大家介紹了關于Java中方法使用的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-08-08
SpringBoot?2.7.18?集成?Mybatis?Plus?+?Druid的實例詳解
Mybatis和MybatisPlus都是流行的持久層框架,MybatisPlus在Mybatis基礎上增加了更多便捷的功能,如自動CRUD、分頁插件等,文章還提到了Entity、Mapper、Service、Controller等組件的基本使用方法,為開發(fā)者提供了一套完整的集成方案2024-10-10

