Java枚舉與注解的創(chuàng)建步驟
枚舉
自定義枚舉類(lèi)
創(chuàng)建方法
- 將構(gòu)造器私有化,防止直接new
- 去掉setXXX方法,防止屬性直接被修改
- 在類(lèi)的內(nèi)部,直接創(chuàng)建固定的對(duì)象
- 優(yōu)化:在創(chuàng)建對(duì)象時(shí)添加final修飾,類(lèi)就不會(huì)被加載
注意事項(xiàng)
- 對(duì)枚舉對(duì)象/屬性使用final+static共同修飾,實(shí)現(xiàn)底層優(yōu)化
- 枚舉對(duì)象名通常使用全部大寫(xiě)
- 枚舉對(duì)象根據(jù)需要,也可以有多個(gè)屬性
關(guān)鍵字Enum枚舉類(lèi)
創(chuàng)建步驟
- 使用關(guān)鍵字enum替代class
- public static final Season SPRING = new Season("春天","溫暖");直接使用SPRING("春天","溫暖"):常量名(實(shí)參列表)
- 如果使用無(wú)參構(gòu)造器創(chuàng)建枚舉對(duì)象,則實(shí)參列表和小括號(hào)都可以省略
- 如果有多個(gè)常量(對(duì)象),使用,間隔,最后一個(gè)用分號(hào);
- 如果使用enum來(lái)實(shí)現(xiàn)枚舉類(lèi),要求將定義的常量對(duì)象,必須寫(xiě)在類(lèi)的行首
注意事項(xiàng)
使用enum關(guān)鍵字后就不能繼承其他類(lèi)了,因?yàn)閑num會(huì)隱式繼承Enum類(lèi),而java是單繼承
枚舉類(lèi) 和普通類(lèi)一樣,可以實(shí)現(xiàn)接口
enum 類(lèi)名 implements 接口1,接口2{}
**個(gè)人理解:**枚舉類(lèi)就是一個(gè)類(lèi),里面的枚舉對(duì)象就是創(chuàng)建好的對(duì)象放在里面
public class test { public static void main(String[] args) { Color color = Color.RED; switch (color){ case RED: color.show(); break; case BLUE: color.show(); break; default: break; } } } public interface Show { public void show(); } public enum Color implements Show{ RED(255,0,0),BLUE(0,0,255),BLACK(0,0,0),YELLOW(255,255,0),GREEN(0,255,0); private int redValue; private int greenValue; private int blueValue; Color(int redValue,int greenValue,int blueValue){ this.redValue = redValue; this.greenValue = greenValue; this.blueValue = blueValue; } @Override public void show(){ System.out.println("red:"+this.redValue+",green:"+this.greenValue+",blue:"+this.blueValue); } }
Enum成員方法
- toString:返回當(dāng)前對(duì)象名,子類(lèi)可以重寫(xiě)
- name:返回當(dāng)前對(duì)象名(常量名),子類(lèi)中不能重寫(xiě)
- ordinal:返回當(dāng)前對(duì)象的位置號(hào),默認(rèn)從0開(kāi)始
- values:返回一個(gè)數(shù)組,包含當(dāng)前枚舉類(lèi)的所有常量
- valueOf:將字符串轉(zhuǎn)換成枚舉對(duì)象,要求字符串為已有的常量名,否則報(bào)異常
- comparaTo:比較兩個(gè)枚舉常量,比較的就是位置號(hào)
例:創(chuàng)建一個(gè)枚舉類(lèi)并打印其中的常量對(duì)象
public class EnumExercise { public static void main(String[] args) { System.out.println("=====遍歷枚舉======="); Week[] weeks = Week.values(); for (Week week :weeks){ System.out.println(week); } } } enum Week{ Monday("星期一"),Tuesday("星期二"),Wednesday("星期三"),Thursday("星期四"); private String name; private Week(String name) { this.name = name; } @Override public String toString(){ return name; } }
注解
- 用于修飾解釋、包、類(lèi)、方法、屬性、構(gòu)造器、局部變量等數(shù)據(jù)信息
- 注解不影響程序邏輯,但注解可以編譯或運(yùn)行,相當(dāng)于嵌套在代碼中的補(bǔ)充信息
- 在java SE 中,注解使用目的比較簡(jiǎn)單,例如標(biāo)記過(guò)時(shí)的功能、忽略警告等;在java EE 中,用來(lái)配置應(yīng)用程序的任何切面,代替java EE 舊版本中所遺留的繁冗代碼和xml配置等
@override
用于限定某個(gè)方法,是重寫(xiě)父類(lèi)方法,該注解只能用于方法
如果寫(xiě)了@override,編譯器會(huì)檢查該方法是否真的重寫(xiě)了父類(lèi)的方法;相當(dāng)于提醒編譯器校驗(yàn)
如果沒(méi)寫(xiě),如果父類(lèi)有對(duì)應(yīng)方法,一樣的構(gòu)成重寫(xiě)
@Deprecated
- 用于表示某個(gè)程序元素(類(lèi)、方法)已過(guò)時(shí)
- 可以修飾類(lèi)、方法、包、字段、參數(shù)
- 用作版本升級(jí)過(guò)度時(shí)使用
@SuppressWarnings
- 抑制編譯器警告
- 不希望看到警告時(shí),可以用這個(gè)注解來(lái)抑制編 譯器
- 作用范圍:和放置的位置有關(guān)
元注解(了解)
- @Retention:用于修飾一個(gè)注解,指定該注解可以保留多長(zhǎng)時(shí)間
- @Target:用于修飾一個(gè)注解,指定被修飾的注解能修飾哪些元素;target包含一個(gè)value的成員變量
- @Documented:用于指定被修飾的注解類(lèi)將被javadoc工具提取成文檔
- @Inherited:子類(lèi)會(huì)繼承被這個(gè)注解修飾的注解
總結(jié)
到此這篇關(guān)于Java的枚舉與注解的文章就介紹到這了,更多相關(guān)枚舉與注解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java中java.lang.ClassCastException異常原因以及解決方法詳解
這篇文章主要給大家介紹了關(guān)于Java中java.lang.ClassCastException異常原因以及解決方法的相關(guān)資料,ClassCastException從字面上看是類(lèi)型轉(zhuǎn)換錯(cuò)誤,通常是進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換時(shí)候出的錯(cuò)誤,需要的朋友可以參考下2024-02-02詳解配置類(lèi)為什么要添加@Configuration注解
這篇文章主要介紹了詳解配置類(lèi)為什么要添加@Configuration注解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05springboot themaleaf 第一次進(jìn)頁(yè)面不加載css的問(wèn)題
這篇文章主要介紹了springboot themaleaf 第一次進(jìn)頁(yè)面不加載css的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10Java實(shí)現(xiàn)Kafka生產(chǎn)者和消費(fèi)者的示例
這篇文章主要介紹了Java實(shí)現(xiàn)Kafka生產(chǎn)者和消費(fèi)者的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02Java數(shù)據(jù)結(jié)構(gòu)之稀疏矩陣定義與用法示例
這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之稀疏矩陣定義與用法,結(jié)合實(shí)例形式分析了java稀疏矩陣的定義、運(yùn)算、轉(zhuǎn)換等相關(guān)操作技巧,需要的朋友可以參考下2018-01-01SpringBoot 中大文件(分片上傳)斷點(diǎn)續(xù)傳與極速秒傳功能的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot 中大文件(分片上傳)斷點(diǎn)續(xù)傳與極速秒傳功能的實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07