摘要:中的枚舉是一個(gè)類(lèi),所以枚舉也可一后構(gòu)造函數(shù)和其他的方法只是枚舉繼承了類(lèi),所以它不能再繼承其它的類(lèi)。如果給每個(gè)枚舉值指定屬性,則必須給枚舉類(lèi)提供枚舉值屬性對(duì)應(yīng)數(shù)據(jù)類(lèi)型的構(gòu)造方法。紅色藍(lán)色白色運(yùn)行的結(jié)果為藍(lán)色
二、類(lèi) 1、Enum 枚舉
java 語(yǔ)言所有枚舉類(lèi)型的公共類(lèi);
枚舉用來(lái)替換使用常量表示列入顏色、方式、類(lèi)別等數(shù)量有限,形式離散有表示明確的量;
枚舉是類(lèi)型安全的,超出枚舉類(lèi)型的返回,將會(huì)發(fā)生編譯時(shí)錯(cuò)誤;
例:
使用常量來(lái)表示顏色:
public class Entity{ public static final int red = 1; public static final int white = 2; public static final int blue = 3; private int id; private int color; public Entity(int id, int color){ this.id = id; this.color = color; } //id與color的getter 和setter方法 ... }
實(shí)例化一個(gè)Entity對(duì)象時(shí):
Entity entity = new Entity(); entity.setId(10); entity.setColor(1);
或者:
Entity entity = new Entity(); entity.setId(10); entity.setColor(Entity.red);
使用第一種方式,代碼的可讀性低,1到底代表的什么顏色,需要到Entity類(lèi)中查看;
使用第二種方式,同樣需要去Entity類(lèi)中查看代碼,才能知道怎么調(diào)用,參數(shù)要怎么傳。
使用枚舉來(lái)表示顏色
//Color.java package com.heisenberg.Learn; public enum Color { red,blue,white } //Entity.java package com.heisenberg.Learn; public class Entity { private Color color; private int id; public Color getColor() { return color; } public void setColor(Color color) { this.color = color; } public int getId() { return id; } public void setId(int id) { this.id = id; } public static void main(String[] args) { Entity entity = new Entity(); entity.setId(10); entity.setColor(Color.blue); } }
使用枚舉,代碼的可讀性提升了,并且在給color賦值時(shí),只能選擇Color枚舉類(lèi)中定義的三個(gè)選項(xiàng),所以枚舉是類(lèi)型安全的,如果使用了另外的值,將出現(xiàn)編譯錯(cuò)誤。
java中的枚舉是一個(gè)類(lèi),所以枚舉也可一后構(gòu)造函數(shù)和其他的方法;只是枚舉繼承了Enum類(lèi),所以它不能再繼承其它的類(lèi)。
如果給每個(gè)枚舉值指定屬性,則必須給枚舉類(lèi)提供枚舉值屬性對(duì)應(yīng)數(shù)據(jù)類(lèi)型的構(gòu)造方法。如下,Color的每個(gè)枚舉值都帶有一個(gè)int和一個(gè)String類(lèi)型的屬性,則必須提供Color(int value,String name)的構(gòu)造方法;屬性的名稱(chēng)不受限制,但是屬性的類(lèi)型要一一對(duì)應(yīng)。
//Color.java package com.heisenberg.Learn; public enum Color { red(1,"紅色"),blue(2,"藍(lán)色"),white(3,"白色"); int value; String name; private Color(int value, String name) { this.value = value; this.name = name; } public int getValue() { return value; } public void setValue(int value) { this.value = value; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
public static void main(String[] args) { Entity entity = new Entity(); entity.setId(10); entity.setColor(Color.blue); System.out.println(entity.getColor().getValue()); System.out.println(entity.getColor().getName()); }
運(yùn)行的結(jié)果為:
2
藍(lán)色
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/68323.html
摘要:一接口能夠被添加字符序列和字符的對(duì)象。對(duì)于多線(xiàn)程訪問(wèn)而言沒(méi)必要是安全的。是值的一個(gè)可讀序列。此接口對(duì)許多不同種類(lèi)的序列提供統(tǒng)一的只讀訪問(wèn)。如果該對(duì)象小于等于或大于指定對(duì)象,則分別返回負(fù)整數(shù)零或正整數(shù)。 一、接口 1、Appendable 能夠被添加字符序列(CharSequence)和字符(char)的對(duì)象。CharSequence已知實(shí)現(xiàn)的類(lèi)有:CharBuffer、Segment...
摘要:已知常用子接口實(shí)現(xiàn)該接口的類(lèi)可以成為語(yǔ)句的目標(biāo)唯一方法返回一個(gè)在一組類(lèi)型的元素上進(jìn)行迭代的迭代器。使用遍歷對(duì)象判斷是否存在下一個(gè)元素獲取下一個(gè)元素移除該元素為類(lèi)專(zhuān)門(mén)創(chuàng)建的接口。 6 Iterable 已知常用子接口:Collection、List、Set; 實(shí)現(xiàn)該接口的類(lèi)可以成為foreach 語(yǔ)句的目標(biāo) List list = new ArrayList(); for(List ...
摘要:一依賴(lài)剛開(kāi)始少這個(gè)包創(chuàng)建索引失敗官方文檔并沒(méi)有給這個(gè)提示二開(kāi)始之前的準(zhǔn)備官方文檔連接操作所用到的實(shí)體類(lèi)三關(guān)于索引的操作官方文檔新增索引索引名稱(chēng)分片副本內(nèi)容查詢(xún)指定索引索引名稱(chēng)刪除索引四關(guān)于文檔的操作官方文檔創(chuàng)建文檔索引名稱(chēng)前 一、Maven依賴(lài) org.elasticsearch elasticsearch 7.1.0...
摘要:如果需要支持類(lèi)的動(dòng)態(tài)加載或需要對(duì)編譯后的字節(jié)碼文件進(jìn)行解密操作等,就需要與類(lèi)加載器打交道了。雙親委派模型,雙親委派模型,約定類(lèi)加載器的加載機(jī)制。任何之類(lèi)的字節(jié)碼都無(wú)法調(diào)用方法,因?yàn)樵摲椒ㄖ荒茉陬?lèi)加載的過(guò)程中由調(diào)用。 jvm系列 垃圾回收基礎(chǔ) JVM的編譯策略 GC的三大基礎(chǔ)算法 GC的三大高級(jí)算法 GC策略的評(píng)價(jià)指標(biāo) JVM信息查看 GC通用日志解讀 jvm的card table數(shù)據(jù)...
摘要:反射學(xué)習(xí)的靈魂我們從最初的,到面向?qū)ο蟛糠?,我們可以將代碼在計(jì)算機(jī)中經(jīng)歷的階段分為三部分源代碼階段類(lèi)對(duì)象階段運(yùn)行時(shí)階段而我們知道,中一個(gè)類(lèi)在源代碼階段,是存儲(chǔ)在硬盤(pán)中的,而編譯后,就已經(jīng)被加載到內(nèi)存中區(qū),那么有沒(méi)有一種方法可以在這種情況下 反射:Web學(xué)習(xí)的靈魂 我們從最初的 javac -HelloWorld.java,到面向?qū)ο蟛糠郑覀兛梢詫ava代碼在計(jì)算機(jī)中經(jīng)歷的階段分為三...
閱讀 3254·2021-09-10 10:51
閱讀 3445·2021-08-31 09:38
閱讀 1761·2019-08-30 15:54
閱讀 3194·2019-08-29 17:22
閱讀 3283·2019-08-26 13:53
閱讀 2033·2019-08-26 11:59
閱讀 3343·2019-08-26 11:37
閱讀 3372·2019-08-26 10:47