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

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

Java枚舉類型原理

2018-05-18 10:14:28
2189

  枚舉(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進行替代。

?
主站蜘蛛池模板: 久久人人爽人人爽人人 | 97国产情侣爱久久免费观看 | 国产亚洲精品成人 | 久久在线视频精品 | 五月婷网站| 欧美激情综合网 | 亚洲一级二级三级 | 免费激情在线电影 | 中文字幕乱码亚洲精品一区 | 欧美精品免费在线观看 | 9草在线| 中文字幕中文字幕在线中文字幕三区 | 欧美日韩在线视频观看 | 久久午夜羞羞影院 | 日韩欧美高清视频在线观看 | 亚洲成年人在线播放 | 在线观看一区视频 | 草在线| 久久黄色美女 | 黄色亚洲大片免费在线观看 | 久久九九国产精品 | 一级黄色免费网站 | 超碰免费久久 | 黄色在线观看免费网站 | 日本在线中文在线 | 色婷婷免费 | 久精品在线观看 | 久久激情综合网 | 欧美日本中文字幕 | 国产成人精品综合久久久 | 国产又粗又硬又爽的视频 | 亚洲视频2 | 久久久久久久av | 国产精品美女久久久 | 国产综合久久 | 黄色性av| 色偷偷网站视频 | 久久er99热精品一区二区三区 | 中文字幕亚洲高清 | 日韩精品免费在线视频 | 久草免费福利在线观看 | 国产手机视频在线播放 | 黄色小说视频网站 | 久草精品国产 | 在线视频观看你懂的 | 久久一区二| 亚洲一级黄色大片 | 国产精品久久久久久久久久久久 | av网站手机在线观看 | 伊人五月天婷婷 | 精品国产一区二区三区四区在线观看 | 4438全国亚洲精品观看视频 | 五月婷婷亚洲 | 激情 婷婷| 亚洲婷婷免费 | 日韩va亚洲va欧美va久久 | 干干操操| 亚洲黄色一级视频 | www.夜夜| 国产精品毛片久久久久久久久久99999999 | 日韩免费电影一区二区 | 久久久亚洲影院 | 免费视频一区二区 | 国产精品久久免费看 | 国产黄在线播放 | 韩国av三级 | 欧美性生活大片 | 999久久久久| 婷婷色在线资源 | 嫩草91影院| 日韩有码专区 | 在线观看亚洲免费视频 | 亚洲老妇xxxxxx | 在线看一级片 | 国产糖心vlog在线观看 | 久久精品专区 | 亚洲视频,欧洲视频 | 三级在线视频播放 | 黄色99视频 | 日韩在线理论 | 国产精品18久久久久久久 | 欧美精品一区二区免费 | 色综合天天色综合 | 中文字幕在线观看2018 | 久久久久亚洲精品成人网小说 | 色噜噜狠狠狠狠色综合久不 | 九九在线播放 | 国产一区私人高清影院 | 日韩精品一区二区三区电影 | 国产日韩精品一区二区三区在线 | 麻豆观看 | 日韩中文字幕在线看 | www.香蕉视频在线观看 | 激情综合站 | 国产精品igao视频网网址 | 久青草国产在线 | 日韩av电影中文字幕在线观看 | www.888.av| 黄色av网站在线免费观看 |