最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java?枚舉的常用技巧匯總

 更新時(shí)間:2025年01月07日 08:54:32   作者:魔道不誤砍柴功  
在Java中,枚舉類型是一種特殊的數(shù)據(jù)類型,允許定義一組固定的常量,默認(rèn)情況下,toString方法返回枚舉常量的名稱,本文提供了一個(gè)完整的代碼示例,展示了如何在Java中通過(guò)重寫枚舉的toString方法來(lái)展示枚舉實(shí)例的字段信息,感興趣的朋友一起看看吧

一、枚舉的基本概念

1. 什么是枚舉?

枚舉是用來(lái)定義一組常量的類型,通常用于表示一系列固定的值。Java 枚舉是通過(guò) enum 關(guān)鍵字來(lái)定義的,并且每個(gè)枚舉都是 java.lang.Enum 的子類。

2. 基本枚舉示例

public enum Day {
    SUNDAY,
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY
}

在這個(gè)例子中,Day 枚舉定義了一周中的7天,每個(gè)枚舉值(SUNDAY、MONDAY 等)都是 Day 類型的常量。

使用示例:

Day today = Day.MONDAY;
if (today == Day.MONDAY) {
    System.out.println("It's the start of the work week!");
}

3. 枚舉的優(yōu)勢(shì)

  • 類型安全:枚舉提供了編譯時(shí)的類型檢查,避免了使用字符串或整型常量帶來(lái)的錯(cuò)誤。
  • 可讀性:枚舉讓代碼變得更加自描述,明確了具體的業(yè)務(wù)含義。
  • 可擴(kuò)展性:枚舉可以定義方法、字段、實(shí)現(xiàn)接口等,非常靈活。

二、枚舉的高級(jí)用法

1. 枚舉中的字段和方法

枚舉不僅僅可以定義常量,還可以包含字段、構(gòu)造函數(shù)方法。通過(guò)這種方式,枚舉可以存儲(chǔ)更多的相關(guān)信息,并根據(jù)需要執(zhí)行邏輯。

示例:表示一周中的天,包含是否是工作日的信息

public enum Day {
    SUNDAY(false),
    MONDAY(true),
    TUESDAY(true),
    WEDNESDAY(true),
    THURSDAY(true),
    FRIDAY(true),
    SATURDAY(false);
    private final boolean isWorkday;
    // 構(gòu)造函數(shù)
    Day(boolean isWorkday) {
        this.isWorkday = isWorkday;
    }
    public boolean isWorkday() {
        return isWorkday;
    }
}

在這個(gè)示例中,我們?yōu)槊恳惶於x了一個(gè)布爾字段 isWorkday,用來(lái)表示這一天是否是工作日。每個(gè)枚舉常量在定義時(shí)都需要為這個(gè)字段賦值。

使用方法:

Day today = Day.WEDNESDAY;
if (today.isWorkday()) {
    System.out.println(today + " is a workday.");
} else {
    System.out.println(today + " is not a workday.");
}

2. 為枚舉添加行為

你可以為每個(gè)枚舉常量定義不同的行為,類似于策略模式。我們可以通過(guò)在枚舉中定義抽象方法,并為每個(gè)枚舉常量提供不同的實(shí)現(xiàn)。

示例:不同支付方式的手續(xù)費(fèi)計(jì)算

public enum PaymentMethod {
    CREDIT_CARD {
        @Override
        public double calculateFee(double amount) {
            return amount * 0.02; // 2% 手續(xù)費(fèi)
        }
    },
    DEBIT_CARD {
        @Override
        public double calculateFee(double amount) {
            return amount * 0.01; // 1% 手續(xù)費(fèi)
        }
    },
    PAYPAL {
        @Override
        public double calculateFee(double amount) {
            return amount * 0.03; // 3% 手續(xù)費(fèi)
        }
    };
    // 抽象方法,每個(gè)枚舉常量都需要實(shí)現(xiàn)
    public abstract double calculateFee(double amount);
}

使用方法:

double amount = 1000.0;
PaymentMethod method = PaymentMethod.CREDIT_CARD;
double fee = method.calculateFee(amount);
System.out.println("Payment method: " + method + ", Fee: " + fee);

在這個(gè)例子中,每種支付方式都有自己特定的手續(xù)費(fèi)計(jì)算規(guī)則,且通過(guò)枚舉實(shí)現(xiàn)了不同的行為邏輯。

3. 枚舉實(shí)現(xiàn)接口

枚舉不僅可以包含方法,還可以實(shí)現(xiàn)接口。這使得枚舉更加靈活,可以用于一些面向接口編程的場(chǎng)景中。

示例:用枚舉實(shí)現(xiàn)簡(jiǎn)單的命令模式

public interface Command {
    void execute();
}
public enum SimpleCommand implements Command {
    START {
        @Override
        public void execute() {
            System.out.println("Starting...");
        }
    },
    STOP {
        @Override
        public void execute() {
            System.out.println("Stopping...");
        }
    },
    RESTART {
        @Override
        public void execute() {
            System.out.println("Restarting...");
        }
    }
}

使用方法:

SimpleCommand command = SimpleCommand.START;
command.execute();

在這里,SimpleCommand 枚舉實(shí)現(xiàn)了 Command 接口,并為每個(gè)命令提供了不同的實(shí)現(xiàn)。這種設(shè)計(jì)非常適合有多種狀態(tài)或命令的場(chǎng)景。

4. 覆蓋 toString() 方法

枚舉的默認(rèn) toString() 方法會(huì)返回常量的名字,有時(shí)我們需要自定義輸出結(jié)果,可以覆蓋 toString() 方法。

示例:自定義枚舉的顯示內(nèi)容

public enum Day {
    SUNDAY("Sunday"),
    MONDAY("Monday"),
    TUESDAY("Tuesday"),
    WEDNESDAY("Wednesday"),
    THURSDAY("Thursday"),
    FRIDAY("Friday"),
    SATURDAY("Saturday");
    private final String displayName;
    Day(String displayName) {
        this.displayName = displayName;
    }
    @Override
    public String toString() {
        return displayName;
    }
}

使用時(shí):

System.out.println(Day.MONDAY);  // 輸出: Monday

通過(guò)覆蓋 toString() 方法,我們可以自定義每個(gè)枚舉常量的輸出格式。

三、枚舉結(jié)合 switch 語(yǔ)句

在 Java 中,switch 語(yǔ)句從 1.5 版本開始支持枚舉類型,這使得處理枚舉更加簡(jiǎn)潔。

示例:基于枚舉類型進(jìn)行條件分支處理

public class EnumSwitchExample {
    public static void main(String[] args) {
        Day today = Day.FRIDAY;
        switch (today) {
            case MONDAY:
                System.out.println("Back to work!");
                break;
            case FRIDAY:
                System.out.println("Almost weekend!");
                break;
            case SUNDAY:
                System.out.println("Rest and relax!");
                break;
            default:
                System.out.println("Just another day.");
                break;
        }
    }
}

在這種情況下,使用 switch 語(yǔ)句可以更加清晰和簡(jiǎn)潔地處理枚舉的不同值。

四、枚舉的序列化和線程安全

Java 中的枚舉是單例的,意味著每個(gè)枚舉常量在 JVM 中只有一個(gè)實(shí)例,因此它們本質(zhì)上是線程安全的。即使在序列化時(shí),Java 枚舉仍然是單例的,因?yàn)樵诜葱蛄谢^(guò)程中,Java 會(huì)確保返回相同的枚舉實(shí)例。

示例:枚舉作為單例模式

public enum SingletonEnum {
    INSTANCE;
    public void doSomething() {
        System.out.println("Singleton doing something...");
    }
}

使用方法:

SingletonEnum singleton = SingletonEnum.INSTANCE;
singleton.doSomething();

通過(guò)枚舉實(shí)現(xiàn)單例模式,不僅代碼簡(jiǎn)潔,還保證了序列化的安全性。

五、總結(jié)

Java 枚舉不僅僅是定義一組常量的工具,它還可以用來(lái)存儲(chǔ)數(shù)據(jù)、實(shí)現(xiàn)方法、擴(kuò)展行為,甚至可以用于實(shí)現(xiàn)設(shè)計(jì)模式。枚舉的高級(jí)用法讓我們能夠?qū)懗龈忧逦?、可維護(hù)和靈活的代碼。

總結(jié)為以下幾點(diǎn):

  • 基本使用:枚舉是定義常量的最佳工具,確保類型安全。
  • 高級(jí)用法:通過(guò)字段、方法和構(gòu)造函數(shù),使枚舉更加靈活。
  • 實(shí)現(xiàn)接口與抽象方法:可以讓枚舉支持不同的行為邏輯。
  • 結(jié)合 switch:方便條件判斷,代碼更簡(jiǎn)潔。
  • 線程安全與單例模式:枚舉的單例特性確保了線程安全和序列化安全。

枚舉不僅是“常量集合”,也是 Java 世界中極具表現(xiàn)力的工具。

到此這篇關(guān)于Java 枚舉的常用技巧匯總的文章就介紹到這了,更多相關(guān)Java 枚舉使用技巧內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 說(shuō)說(shuō)Java異步調(diào)用的幾種方式

    說(shuō)說(shuō)Java異步調(diào)用的幾種方式

    本文主要介紹了說(shuō)說(shuō)Java異步調(diào)用的幾種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 舉例詳解Java編程中HashMap的初始化以及遍歷的方法

    舉例詳解Java編程中HashMap的初始化以及遍歷的方法

    這篇文章主要介紹了Java編程中HashMap的初始化以及遍歷的方法,是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-11-11
  • SpringBoot實(shí)現(xiàn)文件訪問(wèn)安全的方法詳解

    SpringBoot實(shí)現(xiàn)文件訪問(wèn)安全的方法詳解

    在Web應(yīng)用開發(fā)中,文件上傳、下載和讀取功能是常見需求,然而,不安全的文件訪問(wèn)實(shí)現(xiàn)可能導(dǎo)致嚴(yán)重的任意文件讀取/寫入漏洞,下面我們就來(lái)看看SpringBoot實(shí)現(xiàn)文件訪問(wèn)安全的相關(guān)方法吧
    2025-12-12
  • javaFX實(shí)現(xiàn)五子棋小游戲

    javaFX實(shí)現(xiàn)五子棋小游戲

    這篇文章主要為大家詳細(xì)介紹了javaFX實(shí)現(xiàn)五子棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • SpringBoot 任務(wù)調(diào)度動(dòng)態(tài)設(shè)置方式(不用重啟服務(wù))

    SpringBoot 任務(wù)調(diào)度動(dòng)態(tài)設(shè)置方式(不用重啟服務(wù))

    這篇文章主要介紹了SpringBoot 任務(wù)調(diào)度 動(dòng)態(tài)設(shè)置方式(不用重啟服務(wù)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java集合之同步容器詳解

    Java集合之同步容器詳解

    這篇文章主要為大家詳細(xì)介紹了Java集合之同步容器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • IDEA中g(shù)it使用實(shí)現(xiàn)文件修改后有顏色提示的設(shè)置

    IDEA中g(shù)it使用實(shí)現(xiàn)文件修改后有顏色提示的設(shè)置

    本文介紹了IntelliJ IDEA中SVN插件的可視化設(shè)置,說(shuō)明默認(rèn)只有修改文件有顏色提示,需手動(dòng)設(shè)置File->setting->VersionControl圖示以顯示父目錄顏色;可可設(shè)置不同狀態(tài)下的高亮顏色,并可提供其他設(shè)置選項(xiàng)
    2026-04-04
  • 詳解springmvc控制登錄用戶session失效后跳轉(zhuǎn)登錄頁(yè)面

    詳解springmvc控制登錄用戶session失效后跳轉(zhuǎn)登錄頁(yè)面

    本篇文章主要介紹了springmvc控制登錄用戶session失效后跳轉(zhuǎn)登錄頁(yè)面,session一旦失效就需要重新登陸,有興趣的同學(xué)可以了解一下。
    2017-01-01
  • 使用FeignClient進(jìn)行微服務(wù)交互方式(微服務(wù)接口互相調(diào)用)

    使用FeignClient進(jìn)行微服務(wù)交互方式(微服務(wù)接口互相調(diào)用)

    這篇文章主要介紹了使用FeignClient進(jìn)行微服務(wù)交互方式(微服務(wù)接口互相調(diào)用),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java設(shè)計(jì)模式之裝飾模式詳解

    Java設(shè)計(jì)模式之裝飾模式詳解

    這篇文章主要介紹了Java設(shè)計(jì)模式中的裝飾者模式,裝飾者模式即Decorator?Pattern,裝飾模式是在不必改變?cè)愇募褪褂美^承的情況下,動(dòng)態(tài)地?cái)U(kuò)展一個(gè)對(duì)象的功能,裝飾模式又名包裝模式。裝飾器模式以對(duì)客戶端透明的方式拓展對(duì)象的功能,是繼承關(guān)系的一種替代方案
    2022-07-07

最新評(píng)論

鹿邑县| 江城| 井研县| 彭水| 新河县| 长汀县| 南充市| 彝良县| 桂平市| 常熟市| 新河县| 寻乌县| 文成县| 桂林市| 固原市| 仙居县| 通州市| 界首市| 华宁县| 荣成市| 同仁县| 临安市| 海口市| 九寨沟县| 荆门市| 天等县| 红原县| 克什克腾旗| 三门县| 嘉定区| 宁化县| 遂平县| 磴口县| 皋兰县| 称多县| 芒康县| 保亭| 连江县| 涿州市| 鄄城县| 义乌市|