成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

感受一下Java中的“枚舉類型”

開發(fā) 后端
我想幾乎每一個學(xué)習(xí)Java語言的人在學(xué)習(xí)枚舉的時候首先的一個疑問就是“為什么不用static final字段替代?”,有這個疑問就說明你已經(jīng)摸索到了枚舉類型的最主要功能......

學(xué)習(xí)枚舉的第一個疑問:為什么不用static final字段替代

我想幾乎每一個學(xué)習(xí)Java語言的人在學(xué)習(xí)枚舉的時候首先的一個疑問就是“為什么不用static final字段替代?”,有這個疑問就說明你已經(jīng)摸索到了枚舉類型的最主要功能:以統(tǒng)一命名的常量來替換變化無常的直接量,這是毫無疑問是枚舉的最主要作用,在大多數(shù)情況下,用static final是足夠的,所以N多知名的源碼里我們會經(jīng)常看到用static final字段定義的一系列常量;那么為什么要用枚舉呢?有幾個原因:

枚舉的元素是一個實例,所以也是一個類型,相對字段更具有擴(kuò)展性:擴(kuò)展自段、方法、遍歷;

枚舉的申明類也是一個類型,相對于一段的字段申明的所屬類,它提供了很多針對枚舉的方法,如values();

枚舉訪問、比較是兼具性能(ordinal)、及可讀性(name)的;

枚舉在Java里即是一種需要死記硬背的語法,也是一種需要好好理解的設(shè)計

(體會大于解說)

原理

枚舉提供了一套特定的、僅針對編譯時的語法(在運行時枚舉被翻譯為普通類);為“枚舉”這個功能提供了一套量身定制的語法。用于在“枚舉”這個特定場合提供方便快捷、及相對可擴(kuò)展的功能,而不需要開發(fā)人員自己再重新實現(xiàn)一套。enum這個東西,相對于class來說,前者僅是編譯時的一個東西,在運行時enum也被翻譯成了class,換句話說,沒有enum,Java語言仍然保持相同強大的功能,只是在處理“枚舉”這一類需求時,程序員可能會更頭疼一點。

枚舉這個東西讓我記起了小時候一件事情,買折扇;那時記得電視里經(jīng)常放關(guān)于鄭板橋的電視劇,鄭板橋胸前經(jīng)常有一把寫著“鄭板橋”三大字的析扇,所以那時流行起了拆扇風(fēng),記得鎮(zhèn)上有一家小店的折扇賣得非常好,與一般小店不一樣的是,那家賣折扇的老板書法也相當(dāng)不錯(至少我們那時看起來也是有模有樣),所以每次買扇子時,我們都會要求老板幫忙在扇子上寫上我們的名字,這樣這個老板的扇子“推銷”就相當(dāng)成功;其它枚舉這個功能,就相當(dāng)于當(dāng)年Sun老板(現(xiàn)在是oracle)在推銷Java這把扇子上寫上名字,雖然即使老板不寫,我們自己也可以寫,但是寫得怎么樣,或許更好?或許更差?但總的來說,老板寫的還是有一定水準(zhǔn)的,而且我們肯定是可以省力的。

語法特征

一句話搞定

  1. enum A{BigA, SmallA{ String extField; void doSomeThing(){}; }, LargeA} 

如果我們用class語法來實現(xiàn),相當(dāng)于(僅是相當(dāng)于,只為了讓大家了解到用原始的語法實現(xiàn)枚舉的功能有多么復(fù)雜):

  1. final class A extends Enum{  
  2. //編譯器給我們生成的字段、方法, 如values();   
  3. //相關(guān)構(gòu)造函數(shù)  
  4. static final A BigA = new A("BigA"0);  
  5. staitc final A SmaillA = new A("SmallA"1){  
  6. void doSomeThing(){}  
  7. }  
  8. static final A BigA = new A("LargeA"3);  

隱藏特性

元素與元素間的區(qū)別用odinal字段,值從0開始依次遞增

元素的打印標(biāo)記用name字段

枚舉元素編譯后都是static final修飾

枚舉申明類至少用final修飾

枚舉申明類如果是其它類的成員類,那么編譯后默認(rèn)會加static修飾,變成靜態(tài)員類

枚舉在編譯時會自動加上一些“方法”,如values();

枚舉類編譯時自動繼承Enum<E extend Enum<E>>類,所以不能再繼承其它類

枚舉的語法一定要好好理解

原文鏈接:http://it.zhutibo.com/action/subject879.htm

【編輯推薦】

  1. Java8 和 Scala 中的高階函數(shù)
  2. Java8和Scala中的Lambda表達(dá)式
  3. Java SE引路蜂地圖開發(fā)示例
  4. 中軟國際Java程序員筆試題
  5. Java 8的Lambda表達(dá)式
責(zé)任編輯:張偉 來源: 主題博
相關(guān)推薦

2023-06-05 14:14:21

騰訊索引面試

2021-05-31 06:00:55

Python 3.4枚舉開發(fā)

2024-04-11 12:19:01

Rust數(shù)據(jù)類型

2011-07-11 15:02:54

枚舉

2021-06-29 19:27:53

JAVA方法接口

2022-03-24 13:36:18

Java悲觀鎖樂觀鎖

2009-06-25 14:20:01

Java枚舉類型

2011-06-01 16:31:23

枚舉

2020-02-10 14:26:10

GitHub代碼倉庫

2022-04-11 08:08:52

OpenGauss數(shù)據(jù)庫接口

2015-07-28 14:32:41

創(chuàng)業(yè)工作和家庭

2020-07-17 08:36:16

JVM性能監(jiān)控

2023-07-05 08:45:18

Spring事務(wù)失效場景

2021-04-21 14:19:52

javaignalHandle接口

2019-06-24 09:57:39

網(wǎng)絡(luò)工具調(diào)試

2021-11-02 14:54:41

Go結(jié)構(gòu)體標(biāo)簽

2023-02-04 20:08:24

前端開發(fā)

2022-09-05 07:06:59

BeanSpring

2022-05-18 07:43:09

Exchange交換器JUC

2025-02-28 09:14:09

JavaNIO機制
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日韩精品三区 | 国产精品日韩一区 | www.欧美.com| 欧美在线观看一区二区 | 老牛影视av一区二区在线观看 | 午夜ww | 激情国产| 亚洲欧美日韩在线 | 亚洲经典一区 | 欧美日韩成人影院 | 日韩欧美一级片 | 欧美精品日韩精品国产精品 | 久久精品99| 国产精品99久久久久久久vr | 欧洲亚洲精品久久久久 | 大陆一级毛片免费视频观看 | 久久99网 | 免费一区二区 | 成人国产精品久久 | 亚洲精品久久久一区二区三区 | 一级黄色片日本 | 色悠悠久 | 久久久精品久久久 | 毛片的网址 | 欧美伊人影院 | 国产激情一区二区三区 | 亚洲欧洲av在线 | 精品乱码一区二区三四区 | 一级看片| 超碰精品在线 | 国产一区二区三区四区 | 欧美精品久久久 | 99久久国产| 国产精品99久久久久久久vr | 亚洲视频一区在线观看 | 黄色av网站在线观看 | 日韩在线播放第一页 | 超碰网址| 国产成人精品久久二区二区91 | 一级片免费视频 | 五月天国产视频 |