Java 枚舉類的基本使用

来源:http://www.cnblogs.com/zhaoyanjun/archive/2016/07/11/5659811.html
-Advertisement-
Play Games

枚舉(enum)類型是Java 5新增的特性,它是一種新的類型,允許用常量來表示特定的數據片斷,而且全部都以類型安全的形式來表示。 1、常量的使用 在JDK1.5之前,我們定義常量都是:publicstaticfianl....。現在好了,有了枚舉,可以把相關的常量分組到一個枚舉類型里,而且枚舉提供 ...


枚舉(enum)類型是Java 5新增的特性,它是一種新的類型,允許用常量來表示特定的數據片斷,而且全部都以類型安全的形式來表示。

 

1、常量的使用 

     在JDK1.5之前,我們定義常量都是:publicstaticfianl....。現在好了,有了枚舉,可以把相關的常量分組到一個枚舉類型里,而且枚舉提供了比常量更多的方法。

package com;

public enum Color {
	
	 RED, GREEN, BLANK, YELLOW  

}

  使用

package com;

public class B {

	public static void main(String[] args) {


		System.out.println( isRed( Color.BLANK ) ) ;  //結果: false
		System.out.println( isRed( Color.RED ) ) ;    //結果: true

	}


	static boolean isRed( Color color ){
		if ( Color.RED.equals( color )) {
			return true ;
		}
		return false ;
	}

}

  或者 switch 的使用

package com;

public class B {

	public static void main(String[] args) {

		showColor( Color.RED );

	}

	static void showColor(Color color){
		switch ( color ) {
		case BLANK:
			System.out.println( color );
			break;
		case RED :
			System.out.println( color );
			break;
		default:
			System.out.println( color );
			break;
		}
		
	}
}

  

2、自定義函數

package com;

public enum Color {
	
	 RED("紅色", 1), GREEN("綠色", 2), BLANK("白色", 3), YELLO("黃色", 4);
	
	
	private String name ;
	private int index ;
	
	private Color( String name , int index ){
	    this.name = name ;
		this.index = index ;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getIndex() {
		return index;
	}
	public void setIndex(int index) {
		this.index = index;
	}
	

}

  使用

package com;

public class B {

	public static void main(String[] args) {

		//輸出某一枚舉的值
		System.out.println( Color.RED.getName() );
		System.out.println( Color.RED.getIndex() );

		//遍歷所有的枚舉
		for( Color color : Color.values()){
			System.out.println( color + "  name: " + color.getName() + "  index: " + color.getIndex() );
		}
	}

}

  結果

紅色
1
RED name: 紅色 index: 1
GREEN name: 綠色 index: 2
BLANK name: 白色 index: 3
YELLO name: 黃色 index: 4

 

總結:

1、枚舉的本質是類,在沒有枚舉之前,仍然可以按照java最基本的編程手段來解決需要用到枚舉的地方。枚舉屏蔽了枚舉值的類型信息,不像在用public static final定義變數必須指定類型。枚舉是用來構建常量數據結構的模板,這個模板可擴展。枚舉的使用增強了程式的健壯性,比如在引用一個不存在的枚舉值的時候,編譯器會報錯。枚舉的更多用法還需要在開發中去研究創造,Java5、Java6增加了不少新的特性,技術在升級,對程式員來說就要學習,如果你熱愛java的話。否則別人用到新特性的代碼你看不懂,那才叫鬱悶。

2、枚舉在Java家族中只占了很小的一塊比重,所以我在項目中用枚舉的地方不是很多,畢竟,一個項目是很多人開發維護的,用一個陌生的東西,會給其他的同事造成閱讀困難。所以常量大都是用public static final 來定義的。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • [1]常量[2]函數 ...
  • jQuery 插件可以為你做許多事情,你可以很容易地把這些插件集成到您的網站。網路上的 jQuery 日期選擇器和日曆插件很多,但找不到很滿意的時間選擇器插件。 在這裡,我們收集了最好的一組 jQuery 時間選擇器插件列表分享給大家。 ...
  • CSS(Cascading Style Sheet,疊層樣式表),作用是美化HTML網頁。 /*註釋區域*/此為註釋語法 一、樣式表 (一)樣式表的分類 1.內聯樣式表 和HTML聯合顯示,控制精確,但是可重用性差,冗餘較多。 例:<p style="font-size:14px;">內聯樣式表</ ...
  • 雪碧圖的應用實例 ...
  • 文章同步自個人博客:http://www.52cik.com/2016/07/10/consecutive dates.html 這是群里一朋友問的問題,當時我說判斷下 day 是否相鄰即可,後來細想,發現完全不對。 <! more 問題需求 給定5個相同格式的日期,怎麼判斷是否是連續5天呢? 我當 ...
  • overflow:hidden這個CSS樣式是大家常用到的CSS樣式,但是大多數人對這個樣式的理解僅僅局限於隱藏溢出,而其實它還有清除浮動這個功能。 這段代碼是一個做淘寶搜索框中的一段代碼,這裡overflow:hidden就起到了一個清除浮動的效果。 具體代碼可以看慕課網http://www.im ...
  • 還是接著之前說過的最近在寫一個BootStrap網頁....然後要用富文本編輯器,隨便搜了下就選了這貨 然後發現了很尷尬的問題...圖片上傳功能無效....然後各種搜索各種無果...最後怒翻Summernote官方文檔總算解決了,總之寫下解決過程 後端部分就不提供代碼了,滿大街都是,這裡假設後端拿到 ...
  • 一,工程圖。 二,代碼。 RootViewControlle.m //點擊任何處,頁面翻轉 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { FirstViewController *first=[[FirstView ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...