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