日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

0编译器详解_详解Java枚举类型(Enum)中的方法

發(fā)布時間:2024/9/27 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 0编译器详解_详解Java枚举类型(Enum)中的方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章前記
程序員工作久了便可能整日忙碌于“增刪改查”中,迷失方向,毫無進步。
該公眾號致力于分享軟件開發(fā)相關的原創(chuàng)干貨,助你完成從程序員到架構師的進階之路!
努力!做一個NB的Coder!

在上篇文章中,我們對Java中的枚舉類進行了詳細的介紹。

對于Enum還不了解的小伙伴,可以先預習《Java中的枚舉類型(Enum)詳解》一文。

通過反編譯,我們知道Java枚舉類會在編譯之后轉化為一個繼承了java

.lang.Enum的類,而我們定義的每個枚舉值都會在類的初始化階段被實例化為我們所定義的枚舉類的一個對象。

在枚舉類被編譯之后,有一些方法是編譯器在編譯階段寫入的,那這些方法有什么特點?枚舉類中還有一些繼承來的方法,它們又有哪些?枚舉類中的枚舉值是在編譯階段被創(chuàng)建為對象,那構造函數(shù)又在哪?

這篇文章我們將詳細分析。

1 Enum抽象類常見方法

我們上篇文章已經(jīng)講過,枚舉類實際上繼承了Enum抽象類,因此Enum抽象類是所有枚舉類型的基本類,下面是它的常見方法:

  • ordinal()方法:該方法獲取的是枚舉變量在枚舉類中聲明的順序,下標從0開始,如日期中的MONDAY在第一個位置,那么MONDAY的ordinal值就是0,如果MONDAY的聲明位置發(fā)生變化,那么ordinal方法獲取到的值也隨之變化,注意在大多數(shù)情況下我們都不應該首先使用該方法,畢竟它總是變幻莫測的。
  • compareTo(E o)方法:則是比較枚舉的大小,注意其內(nèi)部實現(xiàn)是根據(jù)每個枚舉的ordinal值大小進行比較的。
  • name()方法與toString():幾乎是等同的,都是輸出變量的字符串形式。
  • getDeclaringClass(): 返回該枚舉變量所在的枚舉類。

需要再次說明的是,以上的方法都是Enum抽象類的方法,會被Enum的對象繼承,而不是Enum的靜態(tài)方法。而最終枚舉值被實例化成了Enum對象,所以,枚舉值擁有以上的方法。

這一塊比較簡單,我們直接舉例子說明:

首先我們定義一個最簡單的枚舉類:

之后我們在定義一個附帶屬性的枚舉類:

接下來,我們寫方法進行試驗:

最后結果:

我們可以看到,對于每個枚舉值,可以調(diào)用上述的繼承自Enum抽象類的方法。

2 枚舉類型的構造函數(shù)

既然枚舉值是由編譯器創(chuàng)建為枚舉類型的實例,那它必然調(diào)用了構造函數(shù)。那該函數(shù)在哪呢?我們能不能調(diào)用呢?

其實該構造函數(shù)也在Enum抽象類中。

我們特意將方法注釋也保留了下來,可以看到,該方法只能由編譯器調(diào)用,開發(fā)人員無法調(diào)用。所以說,我們還是不要操心了,只需要定義好枚舉類型,剩下的交給編譯器。

3 再論編譯器插入的靜態(tài)方法

我們知道values()方法和valueOf(String s)方法是由編譯器插入到枚舉類中的靜態(tài)方法。這總讓人覺得怪異。而同時,我們知道枚舉類型中的每一個枚舉值也在編譯階段被聲明為了一個枚舉類。關于這幾點,我們在上一篇文章中已經(jīng)詳細分析,大家可以回上篇文章找回記憶。我們直接貼出通過字節(jié)碼推出的代碼,如下:

有人會這么認為:

  • 原來的Season枚舉類中被編譯器插入了values()方法和valueOf(String s)方法,因此能夠正常調(diào)用Season.values()
  • 如果我們使用某個枚舉值,如Season.AUTUMN向上轉型成為Season枚舉類,則無法調(diào)用values()方法和valueOf(String s)方法

其實這是不對的,因為無論是原生的Season枚舉類還是Season.AUTUMN向上轉型成的Season枚舉類,本質(zhì)上是同一個枚舉類。因此,都應該可以調(diào)用values()方法和valueOf(String s)方法。

對此,我們進行驗證:

得到如下輸出:

證明了筆者的猜測。

4 總結

通過該文章,我們對枚舉類中的方法進行了全面的了解:

  • 枚舉類在編譯階段會被編譯器插入一些靜態(tài)方法
  • 枚舉類本身有個只有編譯器能夠調(diào)用的構造方法,編譯器會使用該方法將枚舉值實例化為枚舉類型的對象
  • 枚舉值被實例化后,繼承了眾多java.lang.Enum中的方法

這樣,通過《Java中的枚舉類型(Enum)詳解》和本篇文章,我們對枚舉類型的原理和方法有了詳細的了解。接下來,我們還會有一篇文章介紹枚舉類型的使用,從而從原理、特性、使用三個方面對枚舉類型進行詳細的介紹,歡迎繼續(xù)關注。

—END—

建議:原創(chuàng)分享不易,請 贊同 后再收藏!

分享讓你從程序員進階架構師的原創(chuàng)干貨!

歡迎關注我,不錯過每期的原創(chuàng)干貨!

總結

以上是生活随笔為你收集整理的0编译器详解_详解Java枚举类型(Enum)中的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产最新精品视频 | 男插女av| 亚洲欧美色图在线 | 亚洲成人自拍视频 | 免费福利在线观看 | 欧美日本一区二区 | 91精品播放 | 成年黄色片 | h片在线观看网站 | 精品久久久久一区二区国产 | 隔壁邻居是巨爆乳寡妇 | 日本黄色高清 | 色批网站 | 日本一级理论片在线大全 | 日本成人一级片 | 成年人免费在线视频 | 看中国毛片 | 国产女人与zoxxxx另类 | 337p亚洲精品色噜噜狠狠 | 性爱视频日本 | 一级黄色影院 | 国产高清精品在线 | 色小姐av| 亚洲精品国产精 | 红桃成人网 | 免费色播 | 伊人久久香 | 可以免费看毛片的网站 | 91精品一区二区三区在线观看 | 实拍女处破www免费看 | 草草草在线 | 成人精品一区二区三区四区 | 久久国产欧美日韩精品 | 成人免费一区二区 | 欧美久久成人 | 国产无遮挡a片又黄又爽 | 欧美一级黄 | 精品人妻二区中文字幕 | 中文字幕国产在线观看 | 男女爽爽爽 | 97人人草| 色噜噜狠狠一区二区三区牛牛影视 | 欧美一区二区不卡视频 | 国产精品1024 | 麻豆亚洲av熟女国产一区二 | 欧美午夜精品一区二区蜜桃 | 国产99久久久国产精品成人免费 | 免费观看久久久 | 嫩草视频在线观看 | 最新色网站 | 男人网站在线观看 | a级片一区二区 | 亚洲第三区 | 91亚洲视频 | 69人妻一区二区三区 | 亚洲精品国产精品国自产网站按摩 | 国产精品久久久久久久久久久新郎 | 午夜手机福利 | 国产色爱 | 国产又爽又黄游戏 | v天堂在线 | 在线播放的av | 狼性av懂色av禁果av | 色a在线| 好色av | 秋霞在线观看视频 | 国内免费精品视频 | 都市激情久久 | 日韩在线你懂的 | 黄色一级片在线看 | 水密桃av | 天天射夜夜骑 | 天堂а√在线中文在线新版 | 日韩欧洲亚洲 | 中文字幕免费一区 | 国内精品久久久久久久久久久 | 日本大尺度电影免费观看全集中文版 | 久久久久中文字幕亚洲精品 | 人人干免费 | 国产在线视频第一页 | jizzjizz欧美69巨大| 国产夫妻在线视频 | 亚洲日本在线观看 | 亚洲一区二区三区视频 | 91成人免费在线观看视频 | 国产精品午夜福利 | 国产日韩在线播放 | 久久疯狂做爰流白浆xx | 学生孕妇videosex性欧美 | 久久亚洲精 | 蜜桃视频污在线观看 | 奇米影视大全 | 91国偷自产一区二区三区老熟女 | 一区二区三区精品在线 | 欧美午夜视频在线观看 | 97精品一区二区视频在线观看 | 黑人多p混交群体交乱 | 国产欧美一区二区三区视频 | 亚洲精品国产精品国自产在线 |