摘要:關(guān)鍵字與和地位相同,其一樣有成員變量方法可以實(shí)現(xiàn)一個(gè)或多個(gè)接口,也可以有構(gòu)造器枚舉類與普通類的區(qū)別枚舉類的父類是類非抽象枚舉類默認(rèn)使用修飾,不能存在子類枚舉類的構(gòu)造器只能使用修飾符,默認(rèn)就是枚舉類的所有實(shí)例必須在枚舉類的第一行顯式列出,否則
enum關(guān)鍵字與class和interface地位相同,其一樣有成員變量、方法、可以實(shí)現(xiàn)一個(gè)或多個(gè)接口,也可以有構(gòu)造器
枚舉類與普通類的區(qū)別枚舉類的父類是java.lang.Enum類
非抽象枚舉類默認(rèn)使用final修飾,不能存在子類
枚舉類的構(gòu)造器只能使用private修飾符,默認(rèn)就是private
枚舉類的所有實(shí)例必須在枚舉類的第一行顯式列出,否則這個(gè)枚舉類永遠(yuǎn)不能產(chǎn)生實(shí)例,列出的實(shí)例,系統(tǒng)會(huì)自動(dòng)添加public static final修飾
抽象的枚舉類,系統(tǒng)默認(rèn)使用abstract修飾,而不用final修飾
package com.em; public enum EmFestival { //會(huì)產(chǎn)生如下四個(gè)實(shí)例 SPRING,SUMMER,FALL,WINTER; }
枚舉值就代表可能會(huì)產(chǎn)生的實(shí)例
package com.em; public class FestivalTest { public static String jude(EmFestival v){ switch (v) { case SPRING: return "春天"; case SUMMER: return "夏天"; case FALL: return "秋天"; case WINTER: return "冬天"; } return null; } public static void main(String[] args) { System.out.println(jude(EmFestival.SPRING)); } }為什么使用枚舉類?
存在命名空間,可以將其他的靜態(tài)常量區(qū)分開(kāi)
打印輸出的意義明確,不想普通常量那樣,都用數(shù)字表示含義,無(wú)法直接表達(dá)含義
枚舉類方法compare(E o):用于與指定的枚舉對(duì)象比較順序,同一個(gè)枚舉實(shí)例只能與相同類型的枚舉實(shí)例進(jìn)行比較。如果該枚舉對(duì)象位于指定枚舉對(duì)象之后,則返回正整數(shù)
name():返回此枚舉實(shí)例的名稱
ordinal():返回枚舉值在枚舉類中的索引值(從0開(kāi)始)
toString():與name方法一致,推薦使用toString
valueOf():一個(gè)靜態(tài)方法,用于返回指定枚舉類中指定名稱的枚舉值
package com.em; public enum EmFestival { //會(huì)產(chǎn)生如下四個(gè)實(shí)例 SPRING("春天"),SUMMER("夏天"),FALL("秋天"),WINTER("冬天"); private final String fest; private EmFestival(String fest){ this.fest=fest; } public String getFest() { return fest; } }實(shí)現(xiàn)接口的枚舉類
枚舉類實(shí)現(xiàn)接口,與正常類沒(méi)有什么區(qū)別
package com.em; import java.io.FileDescriptor; import java.io.IOException; import sun.nio.ch.SelChImpl; import sun.nio.ch.SelectionKeyImpl; public enum EmFestival implements SelChImpl{ // 會(huì)產(chǎn)生如下四個(gè)實(shí)例 SPRING("春天"),SUMMER("夏天"),FALL("秋天"),WINTER("冬天"); @Override public boolean isOpen() { // TODO Auto-generated method stub return false; } @Override public void close() throws IOException { // TODO Auto-generated method stub } @Override public FileDescriptor getFD() { // TODO Auto-generated method stub return null; } @Override public int getFDVal() { // TODO Auto-generated method stub return 0; } @Override public void kill() throws IOException { // TODO Auto-generated method stub } @Override public void translateAndSetInterestOps(int arg0, SelectionKeyImpl arg1) { // TODO Auto-generated method stub } @Override public boolean translateAndSetReadyOps(int arg0, SelectionKeyImpl arg1) { // TODO Auto-generated method stub return false; } @Override public boolean translateAndUpdateReadyOps(int arg0, SelectionKeyImpl arg1) { // TODO Auto-generated method stub return false; } @Override public int validOps() { // TODO Auto-generated method stub return 0; } private final String fest; private EmFestival(String fest){ this.fest=fest; } public String getFest() { return fest; } }包含抽象方法的枚舉類
枚舉類里定義抽象方法時(shí)不能使用abstract關(guān)鍵字將枚舉類定義成抽象類(因?yàn)橄到y(tǒng)自動(dòng)會(huì)添加abastract),但因?yàn)槊杜e類需要顯式創(chuàng)建枚舉值,而不是作為父類,所以定義每個(gè)枚舉值時(shí)必須為抽象方法提供實(shí)現(xiàn),否則出現(xiàn)編譯錯(cuò)誤
package com.em; public enum EmFestival { // 會(huì)產(chǎn)生如下四個(gè)實(shí)例 SPRING("春天") { @Override public String getFestival() { return "春天"; } }, SUMMER("夏天") { @Override public String getFestival() { return "夏天"; } }, FALL("秋天") { @Override public String getFestival() { return "秋天"; } }, WINTER("冬天") { @Override public String getFestival() { return "冬天"; } }; public abstract String getFestival(); private final String fest; private EmFestival(String fest) { this.fest = fest; } public String getFest() { return fest; } }
更多內(nèi)容可以關(guān)注微信公眾號(hào),或者訪問(wèn)AppZone網(wǎng)站
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/65987.html
摘要:結(jié)構(gòu)型模式適配器模式橋接模式裝飾模式組合模式外觀模式享元模式代理模式。行為型模式模版方法模式命令模式迭代器模式觀察者模式中介者模式備忘錄模式解釋器模式模式狀態(tài)模式策略模式職責(zé)鏈模式責(zé)任鏈模式訪問(wèn)者模式。 主要版本 更新時(shí)間 備注 v1.0 2015-08-01 首次發(fā)布 v1.1 2018-03-12 增加新技術(shù)知識(shí)、完善知識(shí)體系 v2.0 2019-02-19 結(jié)構(gòu)...
摘要:強(qiáng)制類型轉(zhuǎn)換下標(biāo)運(yùn)算符變量與常量常量是在程序中的不會(huì)變化的數(shù)據(jù)變量其實(shí)就是內(nèi)存中的一個(gè)存儲(chǔ)空間,用于存儲(chǔ)數(shù)據(jù)。表示結(jié)束本次循環(huán),繼續(xù)下次循環(huán)。 Java知識(shí)點(diǎn)總結(jié) (基本語(yǔ)法) @(Java知識(shí)點(diǎn)總結(jié))[Java, Java基本語(yǔ)法] @(Java開(kāi)發(fā))[Java基本語(yǔ)法] [toc] Java特點(diǎn) 簡(jiǎn)單自然平臺(tái)可移植性支持函數(shù)式編程JIT 編譯更好的并發(fā)編程健壯安全 執(zhí)行方式 編譯...
摘要:枚舉是聲明一組命名的常數(shù),當(dāng)一個(gè)變量有幾種可能的取值時(shí),可以將它定義為枚舉類型。注意枚舉只是枚舉類型,不能夠賦值操作。 枚舉類型是Java 5中新增特性的一部分,它是一種特殊的數(shù)據(jù)類型,之所以特殊是因?yàn)樗仁且环N類(class)類型卻又比類類型多了些特殊的約束,但是這些約束的存在也造就了枚舉類型的簡(jiǎn)潔性、安全性以及便捷性。△有的地方還沒(méi)有學(xué)的透徹,之后會(huì)繼續(xù)學(xué)習(xí)修改更新本文章 1.枚...
摘要:優(yōu)點(diǎn)在谷歌內(nèi)部長(zhǎng)期使用產(chǎn)品成熟度高跨語(yǔ)言支持多種語(yǔ)言包括和編碼后的消息更小更加有利于存儲(chǔ)和傳輸編解碼的性能非常高支持不同協(xié)議版本的前向兼容支持定義可選和必選字段的入門(mén)是一個(gè)靈活高效結(jié)構(gòu)化的數(shù)據(jù)序列化框架相比與等傳統(tǒng)的序列化工具它更小更快更簡(jiǎn) Google Protobuf 優(yōu)點(diǎn): 在谷歌內(nèi)部長(zhǎng)期使用, 產(chǎn)品成熟度高. 跨語(yǔ)言、支持多種語(yǔ)言, 包括 C++、Java 和 Python....
摘要:中的詳解必修個(gè)多線程問(wèn)題總結(jié)個(gè)多線程問(wèn)題總結(jié)有哪些源代碼看了后讓你收獲很多,代碼思維和能力有較大的提升有哪些源代碼看了后讓你收獲很多,代碼思維和能力有較大的提升開(kāi)源的運(yùn)行原理從虛擬機(jī)工作流程看運(yùn)行原理。 自己實(shí)現(xiàn)集合框架 (三): 單鏈表的實(shí)現(xiàn) 自己實(shí)現(xiàn)集合框架 (三): 單鏈表的實(shí)現(xiàn) 基于 POI 封裝 ExcelUtil 精簡(jiǎn)的 Excel 導(dǎo)入導(dǎo)出 由于 poi 本身只是針對(duì)于 ...
閱讀 982·2021-11-23 09:51
閱讀 2695·2021-08-23 09:44
閱讀 656·2019-08-30 15:54
閱讀 1433·2019-08-30 13:53
閱讀 3101·2019-08-29 16:54
閱讀 2527·2019-08-29 16:26
閱讀 1186·2019-08-29 13:04
閱讀 2313·2019-08-26 13:50