日日夜夜精品视频天天综合网I成人一级片免费看I久久久精品I久草视频免费看I中文字幕亚洲欧美I久久综合免费视频I中文字幕一区二I免费看片在线观看

網站開發 APP開發 小程序開發 SEO優化 公司新聞

Java枚舉類型原理

2018-05-18 10:14:28
2125

  枚舉(Enum)類型是 java 5 中新增的一種數據類型,它能夠幫助我們更加快捷和安全的實現枚舉。

  回想之前我們在定義枚舉常量時的做法:

  這樣的定義方式雖然也能正常工作,但卻存在許多不足,比如不小心把 MONDAY 和 TUESDAY 都置為 2 時,編譯器并不會報錯,但是卻很難進行排查。

  在 Java 5 之后,我們可以用如下的定義定義枚舉類型。并可以在程序中通過 的方式使用,這無疑大大提高了程序的安全性。

  我們知道,編程語言的設計具有前向兼容性,這意味著后續的語言特性實際上都是通過語法糖來實現的,那么枚舉類型的內部實現原理是怎么樣的呢?我們通過將上面的枚舉類 Day 通過 命令進行反編譯,再將反編譯的代碼通過改寫使其更加容易閱讀,最終得到下面的反編譯代碼。
 

  通過閱讀上面的反編譯后代碼,我們可以對枚舉類型的實現進行總結:

  枚舉類型是通過繼承 Enum 類來實現的,并且最終生成 final 類來強化不可變性。

  枚舉類型的構造函數為私有的,具有 String 和 int 兩個參數,分別代表枚舉的名稱和序號,序號按照定義的順序從小到大排列。

  每一個枚舉都代表一個枚舉類事例,并且為 static 和 final,在枚舉類的靜態代碼塊中進行初始化,并且有一個 $VALUES 數組保存所有的枚舉。

  通過 valueOf 方法可以完成枚舉名稱到枚舉對象的查找。

  VALUES()方法返回的是 VALUES 數組被篡改。

  接下來,我們來分析一下自定義枚舉類型所繼承的 Enum 類

  通過閱讀上面的 Enum 抽象類,我們可以對其特點進行總結:

  由 equals 方法可知每個枚舉只與自身相等,沒有等效相等的枚舉。

  由 clone 方法可知枚舉對象不允許克隆,這能保證每一個枚舉都是唯一的。

  由 compareTo 方法可知枚舉只能與同類型的枚舉相比較,返回結果為枚舉的順序之差。

  由 finalize 方法可知枚舉類不允許實現 finalize 方法,這與枚舉的安全性有關。

  由 readObject 方法和 readObjectNoData 方法可知枚舉對象不允許反序列化,這也能保證每一個枚舉都是唯一的。

  由以上的分析我們可以發現,枚舉的最大特點就是唯一性,同時可以發現只有單個元素的枚舉在不經意間符合了單例模式的要求,具體為:

  枚舉類為不可變類,這防止了單例類被繼承。

  枚舉類型的構造函數為私有的,因此不能主動創建對應的單例對象。

  枚舉的元素為 public static final 類型,并且在類加載的時候在靜態代碼塊內完成了初始化,這相當于單例模式的惡漢模式。

  枚舉類對象不允許克隆,這能保證每一個單例都是唯一的。

  枚舉類對象不可反序列化,這也能保證每一個單例都是唯一的。

  因此我們可以使用單元素的枚舉類型來實現單例模式。事實上,正如Effective Java一書中所說的:單元素的枚舉類型已經成為實現 Singleton 的最佳方法。

  注意:值得提出的時,由以上的分析我們知道每一個枚舉都是一個對象,既然是對象,那么它所占的內存就比基本類型大很多,這就是枚舉類型的缺點,所以在Android開發中并不建議使用枚舉類型,而是使用等注解加上int或者String進行替代。

?
主站蜘蛛池模板: 毛片一二区 | 九色视频网址 | 午夜色站 | 波多野结衣视频一区 | 欧美激情精品一区 | 男女视频久久久 | 久草免费在线观看 | 久久国产成人午夜av影院潦草 | 久久一级片| 日韩欧美在线影院 | 欧美国产日韩一区二区三区 | 久草视频在线免费 | 男女激情片在线观看 | 亚洲国产中文在线 | 国内精品一区二区 | 9热精品 | 国产成人精品一区二区在线 | 日本在线观看一区 | 日本中文在线 | av片在线看| 天天干,天天射,天天操,天天摸 | 色是在线视频 | 天天曰天天射 | 98精品国产自产在线观看 | 黄色一级大片在线免费看产 | 色综合天天射 | 国产精品破处视频 | 91精品国产92久久久久 | 国产99久久久国产精品免费看 | 国产在线毛片 | 午夜精品一区二区三区在线播放 | 婷婷av电影| 国产精品一区二区久久精品爱涩 | 国产又粗又猛又爽又黄的视频免费 | 中文字幕欧美日韩va免费视频 | 久草网站在线 | 国产一二三在线视频 | 久久午夜免费视频 | 日本中文不卡 | 欧美国产日韩一区二区三区 | 91九色在线视频观看 | 成人久久久久久久久久 | 狠狠搞,com | 国产最顶级的黄色片在线免费观看 | av在线最新 | 久久极品| 91麻豆精品一区二区三区 | 综合黄色网 | 91探花在线视频 | 午夜丁香网 | 日韩二区在线 | 色吊丝在线永久观看最新版本 | 精品国产乱子伦一区二区 | 最新av免费 | 国产又粗又猛又黄又爽视频 | 免费看一级黄色大全 | 97精品久久人人爽人人爽 | 夜色资源网 | 在线观看成人av | 亚洲精品视频在线观看免费视频 | 一区二区三区日韩精品 | 综合在线观看 | 午夜av电影 | 久久精品免费观看 | 天天碰天天操视频 | 91在线免费视频观看 | 91免费版在线观看 | 成人在线视频网 | 欧美在线视频二区 | 精品国产成人av在线免 | 国产91精品一区二区麻豆亚洲 | 精品视频免费久久久看 | 亚洲伦理一区 | 日韩高清片 | 欧美一区二区三区在线播放 | 在线观看黄a | 亚洲午夜不卡 | 久久色在线播放 | 亚洲欧美在线视频免费 | 亚洲人成影院在线 | 黄色av三级在线 | 日韩高清黄色 | 九九久久国产 | 婷婷网址 | 久久 在线| 毛片网站在线观看 | 蜜臀av网址| 精品日韩中文字幕 | 在线观看mv的中文字幕网站 | 精品福利av| 成人a级免费视频 | 日韩高清在线看 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | av在线小说 | 日韩在线观看一区二区三区 | 欧美日韩高清在线 | 亚洲日本va午夜在线电影 | 免费av试看 | 在线观看91精品国产网站 |