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

Java中枚舉的toString()和name()區(qū)別小結(jié)

 更新時(shí)間:2025年08月15日 10:15:43   作者:布朗克168  
本文主要介紹了Java中枚舉的toString()和name()區(qū)別小結(jié),name()返回原始名稱,不可重寫;toString()可重寫以提供更友好的描述,二者用于不同場(chǎng)景,下面就來具體了解一下

一、引言

在 Java 里,枚舉類型是一種特殊的類,toString() 與 name() 方法都和枚舉常量有關(guān),但它們存在一些區(qū)別,下面為你詳細(xì)介紹

二、介紹

  1. name() 方法
    定義:name() 是 java.lang.Enum 類里的一個(gè)方法,所有枚舉類型都能繼承該方法。它的作用是返回枚舉常量的名稱,也就是在枚舉聲明中定義的標(biāo)識(shí)符。
    特點(diǎn):返回值是固定的,不會(huì)受 toString() 方法重寫的影響,始終返回枚舉常量在代碼中定義的原始名稱。
  2. toString() 方法
    定義:toString() 是 java.lang.Object 類中的方法,所有 Java 類都有該方法。在枚舉類型中,默認(rèn)情況下,toString() 方法的行為和 name() 方法一樣,會(huì)返回枚舉常量的名稱。不過,你可以重寫這個(gè)方法,讓它返回更具描述性的字符串。
    特點(diǎn):可以根據(jù)需求重寫,從而返回更有意義的信息,而不局限于枚舉常量的原始名稱。
    下面的示例展示了 name() 和 toString() 方法的使用:
// 定義一個(gè)表示季節(jié)的枚舉
enum Season {
    SPRING,
    SUMMER,
    AUTUMN,
    WINTER;

    // 重寫 toString() 方法,讓其返回更具描述性的字符串
    @Override
    public String toString() {
        switch (this) {
            case SPRING:
                return "春季";
            case SUMMER:
                return "夏季";
            case AUTUMN:
                return "秋季";
            case WINTER:
                return "冬季";
            default:
                return super.toString();
        }
    }
}

public class EnumExample {
    public static void main(String[] args) {
        Season season = Season.SPRING;

        // 使用 name() 方法獲取枚舉常量的原始名稱
        System.out.println("name() 方法返回: " + season.name());

        // 使用 toString() 方法獲取枚舉常量的字符串表示
        System.out.println("toString() 方法返回: " + season.toString());
    }
}

在 Season 枚舉中,重寫了 toString() 方法,讓它返回中文的季節(jié)名稱。

  • 在 main 方法里,先創(chuàng)建了一個(gè) Season 枚舉類型的變量 season,并將其賦值為 SPRING。
  • 調(diào)用 name() 方法時(shí),返回的是枚舉常量的原始名稱 SPRING。
  • 調(diào)用 toString() 方法時(shí),由于重寫了該方法,返回的是更具描述性的字符串 春季。

三、使用場(chǎng)景

在實(shí)際開發(fā)中,重寫枚舉的 toString() 方法通常是為了提供更具可讀性、更符合業(yè)務(wù)需求的字符串表示,以下是一些常見的使用場(chǎng)景:

  1. 增強(qiáng)用戶界面的顯示效果

當(dāng)需要將枚舉值展示給用戶時(shí),默認(rèn)的枚舉常量名稱可能不夠友好。通過重寫 toString() 方法,可以提供更具描述性的文本,提升用戶體驗(yàn)。
示例:

enum Gender {
    MALE,
    FEMALE;

    @Override
    public String toString() {
        switch (this) {
            case MALE:
                return "男性";
            case FEMALE:
                return "女性";
            default:
                return super.toString();
        }
    }
}
  • 在用戶界面中顯示性別時(shí),直接使用 Gender.MALE.toString() 會(huì)顯示 “男性”,而不是 “MALE”,這對(duì)用戶來說更直觀易懂。
  1. 日志記錄和調(diào)試

在日志記錄和調(diào)試過程中,更具描述性的枚舉值表示有助于快速定位問題。重寫 toString() 方法可以讓日志信息更清晰。
示例:

enum OrderStatus {
    CREATED,
    PAID,
    SHIPPED,
    COMPLETED;

    @Override
    public String toString() {
        switch (this) {
            case CREATED:
                return "訂單已創(chuàng)建";
            case PAID:
                return "訂單已支付";
            case SHIPPED:
                return "訂單已發(fā)貨";
            case COMPLETED:
                return "訂單已完成";
            default:
                return super.toString();
        }
    }
}
  • 在記錄訂單狀態(tài)變化的日志時(shí),使用 OrderStatus.PAID.toString() 可以記錄 “訂單已支付”,這樣的日志信息更具可讀性。
  1. 數(shù)據(jù)序列化和反序列化

在將枚舉值序列化為字符串或從字符串反序列化時(shí),可能需要自定義的字符串表示。重寫 toString() 方法可以確保序列化和反序列化過程中使用的字符串符合業(yè)務(wù)需求。
示例:

enum PaymentMethod {
    CREDIT_CARD,
    PAYPAL,
    ALIPAY;

    @Override
    public String toString() {
        switch (this) {
            case CREDIT_CARD:
                return "信用卡支付";
            case PAYPAL:
                return "PayPal支付";
            case ALIPAY:
                return "支付寶支付";
            default:
                return super.toString();
        }
    }
}
  • 在將支付方式信息存儲(chǔ)到數(shù)據(jù)庫(kù)或傳輸?shù)狡渌到y(tǒng)時(shí),使用自定義的字符串表示可以提高數(shù)據(jù)的可讀性和兼容性。
  1. 與外部系統(tǒng)交互

當(dāng)與外部系統(tǒng)(如第三方 API、配置文件等)進(jìn)行交互時(shí),可能需要使用特定格式的字符串來表示枚舉值。重寫 toString() 方法可以確保與外部系統(tǒng)的交互順利進(jìn)行。
示例:

enum Currency {
    USD,
    EUR,
    CNY;

    @Override
    public String toString() {
        switch (this) {
            case USD:
                return "美元";
            case EUR:
                return "歐元";
            case CNY:
                return "人民幣";
            default:
                return super.toString();
        }
    }
}
  • 在與支持多種貨幣的外部支付系統(tǒng)交互時(shí),使用自定義的字符串表示可以避免因枚舉常量名稱不一致而導(dǎo)致的問題。

四、使用場(chǎng)景

  • 本質(zhì)特性和使用場(chǎng)景有別雖然默認(rèn)情況下返回結(jié)果相同,但 name() 和 toString() 在本質(zhì)特性和使用場(chǎng)景上是有差異的:
  • name() 方法:這是 Enum類特有的方法,返回的是枚舉常量在代碼中定義的原始名稱,且這個(gè)返回值是固定不變的,不能被重寫。它主要用于一些需要嚴(yán)格匹配枚舉常量原始名稱的場(chǎng)景,比如反序列化操作、配置文件讀取等。
  • toString() 方法:這是 Object 類的方法,所有 Java類都有該方法。在枚舉中,它默認(rèn)返回枚舉常量的名稱,但可以根據(jù)業(yè)務(wù)需求重寫,以提供更具描述性的信息。它常用于面向用戶的展示、日志記錄等場(chǎng)景。
  • 不重寫 toString() 方法時(shí),它和 name()方法的返回結(jié)果一樣,但兩者的設(shè)計(jì)目的和使用場(chǎng)景不同。若你需要根據(jù)具體業(yè)務(wù)情況提供更友好、更具描述性的枚舉常量表示,就應(yīng)該重寫toString() 方法。

 到此這篇關(guān)于Java中枚舉的toString()和name()的使用區(qū)別小結(jié)的文章就介紹到這了,更多相關(guān)Java 枚舉toString()和name()區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot上傳和下載文件的原理解析

    SpringBoot上傳和下載文件的原理解析

    文件上傳的功能很常見,但是很多人并不清楚文件上傳后的具體原理,接下來通過本文給大家分享SpringBoot上傳和下載文件的原理解析,感興趣的朋友一起看看吧
    2021-07-07
  • Java代碼是如何被CPU狂飆起來的

    Java代碼是如何被CPU狂飆起來的

    無論是剛剛?cè)腴TJava的新手還是已經(jīng)工作了的老司機(jī),恐怕都不容易把Java代碼如何一步步被CPU執(zhí)行起來這個(gè)問題完全講清楚。本文就帶你詳細(xì)了解Java代碼到底是怎么運(yùn)行起來的。感興趣的同學(xué)可以參考閱讀
    2023-03-03
  • SpringCloud Gateway 路由配置定位原理分析

    SpringCloud Gateway 路由配置定位原理分析

    本節(jié)主要了解系統(tǒng)中的謂詞與配置的路由信息是如何進(jìn)行初始化關(guān)聯(lián)生成路由對(duì)象的。每個(gè)謂詞工廠中的Config對(duì)象又是如何被解析配置的
    2021-07-07
  • java如何給對(duì)象按照字符串屬性進(jìn)行排序

    java如何給對(duì)象按照字符串屬性進(jìn)行排序

    這篇文章主要介紹了java如何給對(duì)象按照字符串屬性進(jìn)行排序,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Mybatis-Plus主鍵插入null值報(bào)錯(cuò)問題及解決

    Mybatis-Plus主鍵插入null值報(bào)錯(cuò)問題及解決

    這篇文章主要介紹了Mybatis-Plus主鍵插入null值報(bào)錯(cuò)問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java基礎(chǔ)學(xué)習(xí)之實(shí)參和形參

    Java基礎(chǔ)學(xué)習(xí)之實(shí)參和形參

    這篇文章主要介紹了Java基礎(chǔ)學(xué)習(xí)之實(shí)參形參,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有一定的幫助,需要的朋友可以參考下
    2021-05-05
  • SpringCloud中Gateway的使用教程詳解

    SpringCloud中Gateway的使用教程詳解

    SpringCloud?Gateway是Spring體系內(nèi)的一個(gè)全新項(xiàng)目,它旨在為微服務(wù)架構(gòu)提供一種簡(jiǎn)單有效的統(tǒng)一的API路由管理方式。本文就來為大家詳細(xì)講講Gateway的使用教程,需要的可以參考一下
    2022-08-08
  • Map集合的四種遍歷方式代碼示例

    Map集合的四種遍歷方式代碼示例

    這篇文章主要介紹了Map集合的四種遍歷方式代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • MyBatis-Plus高級(jí)擴(kuò)展詳解

    MyBatis-Plus高級(jí)擴(kuò)展詳解

    本文介紹了MyBatis-Plus中邏輯刪除和樂觀鎖的實(shí)現(xiàn)概念、方法和示例,邏輯刪除通過更改記錄狀態(tài)模擬刪除,而樂觀鎖通過版本號(hào)或時(shí)間戳確保并發(fā)操作的正確性
    2025-03-03
  • 詳解Java的MyBatis框架中動(dòng)態(tài)SQL的基本用法

    詳解Java的MyBatis框架中動(dòng)態(tài)SQL的基本用法

    這篇文章主要介紹了詳解Java的MyBatis框架中動(dòng)態(tài)SQL的基本用法,文中列出了一些常用SQL動(dòng)態(tài)語(yǔ)句進(jìn)行講解,需要的朋友可以參考下
    2016-04-04

最新評(píng)論

静海县| 佛山市| 密云县| 青河县| 麻栗坡县| 安新县| 邮箱| 新晃| 宜阳县| 唐山市| 商河县| 尚义县| 乐平市| 泸溪县| 舟曲县| 新化县| 天全县| 岳普湖县| 梧州市| 宕昌县| 莒南县| 普兰县| 屏南县| 扶沟县| 安仁县| 老河口市| 丘北县| 沽源县| 尚义县| 汉沽区| 阿坝| 呼玛县| 融水| 教育| 黔南| 延边| 通化县| 新建县| 溧阳市| 丰城市| 余干县|