1. 程式人生 > >java列舉類的作用

java列舉類的作用

java列舉類可以簡單地理解為一種特殊的java類,它的主要用途如下:

1、作為型別安全的常量。如下,

public enum Color {
	RED, GREEN, BLANK, YELLOW;
	public static void main(String[] args) {
		System.out.println(Color.RED);//RED
	}
}

之所以列印結果為RED,是因為我們沒有重寫toString()方法,並且,Color.RED依舊是Color型別。如下驗證:

public enum Color {
RED, GREEN, BLANK, YELLOW;
@Override
public String toString() {
return "color:" + super.toString();
};
public static void main(String[] args) {
System.out.println(Color.RED.BLANK);//color:BLANK
System.out.println(RED.ordinal());//0
}
}
上面程式碼證明兩點:1、列舉類中的每個資料都是一個型別;2、列舉類中的每個資料都可以呼叫列舉類的所有方法;3、列舉類的資料是static同時也是final的。

2、可以實現介面拓展功能

public enum Color implements IColor{
	RED, GREEN, BLANK, YELLOW;
	@Override
	public String toString() {
		return "color:" + super.toString();
	};
	public static void main(String[] args) {
		System.out.println(Color.YELLOW.getColorIndex());//3
	}
	@Override
	public int getColorIndex() {
		return this.ordinal();//ordinal()方法是返回列舉資料的排序下標從0開始,按順序遞增
	}
}

interface IColor {
	int getColorIndex();
}

3、將列舉資料與它的常量關聯起來

public enum Season {
	SPRING(20.1),SUMMER(36.5),AUTUMN(12.5),WINTER(0.3);
	/**每個季節的平均氣溫*/
	private double averageTem;
	/**
	 * 構造方法
	 * @param averageTem
	 */
	private Season(double averageTem) {
		this.averageTem = averageTem;
	}
	/**
	 * 提供一個get方法返回資料
	 * @return
	 */
	public double getAverageTem() {
		return averageTem;
	}
	public static void main(String[] args) {
		System.out.println(Season.valueOf("SPRING").getAverageTem());//20.1
	}
}

4、將列舉資料和它的行為關聯起來(特定於常量的方法實現)

public enum Operation {
	ADD {
		@Override
		double apply(double x, double y) {
			return x + y;
		}
	},
	MINUS {
		@Override
		double apply(double x, double y) {
			return x - y;
		}
	},
	TIMES {
		@Override
		double apply(double x, double y) {
			return x * y;
		}
	},
	DEVIDE {
		@Override
		double apply(double x, double y) {
			return x / y;
		}
	};
	/**
	 * 提供一個抽象的方法,強制每個列舉資料都要實現,這樣做拓展不易出錯
	 * @param x
	 * @param y
	 * @return
	 */
	abstract double apply(double x, double y);
	public static void main(String[] args) {
		System.out.println(Operation.ADD.apply(5, 10));
	}
}

綜合例子:

public enum Operation {
	ADD("+") {
		@Override
		double apply(double x, double y) {
			return x + y;
		}
	},
	MINUS("-") {
		@Override
		double apply(double x, double y) {
			return x - y;
		}
	},
	TIMES("*") {
		@Override
		double apply(double x, double y) {
			return x * y;
		}
	},
	DEVIDE("/") {
		@Override
		double apply(double x, double y) {
			return x / y;
		}
	};
	/**
	 * 提供一個抽象的方法,強制每個列舉資料都要實現,這樣做拓展不易出錯
	 * @param x
	 * @param y
	 * @return
	 */
	abstract double apply(double x, double y);
	/**列舉對應的符號*/
	private String symble;
	private Operation(String symble) {
		this.symble = symble;
	}
	@Override
	public String toString() {
		return this.symble;
	}
	public static void main(String[] args) {
		double x = 5;
		double y = 10;
		for(Operation op:Operation.values()) {
			System.out.printf("%f %s %f = %f%n",x,op,y,op.apply(x, y));
		}
	}
}

相關推薦

java列舉作用

java列舉類可以簡單地理解為一種特殊的java類,它的主要用途如下:1、作為型別安全的常量。如下,public enum Color { RED, GREEN, BLANK, YELLOW; public static void main(String[] args)

快速學習JAVA列舉(ENUM)

概述 enum的全稱為enumeration, 是 JDK 1.5中引入的新特性,存放在 java.lang包中。在某些情況下,一個類的物件是固定的,就可以定義為列舉。在實際使用中,列舉型別也可以作為一種規範,保障程式引數安全。 特點 Java中列舉和類、介面的級別相

java列舉示例

看完這個,你就知道列舉可以怎麼定義屬性和方法了 public enum TBSHOP_TYPE {  TBSHOP_c0("C0-xx","xx專賣店"),  TBSHOP_C1("C1-xx","xx折扣店"),  TBSHOP_C2("C2-xx","xx票

關於JAVA列舉和Enum方法

1.列舉類入門 Java列舉類是從Java5開始支援的。 列舉類的構造方法是用private修飾的。列舉類的所有例項必須在類的第一行列出,否則這個列舉類不會產生物件。 而且這些例項都是public static void. 每個列舉類都有一個values

Java列舉在專案中的使用

在很多時候我們定義一些狀態量都是使用0或者1,-1這樣在資料庫中定義,這樣的資料存放在資料庫的相應欄位中方便資料讀取,但是隻儲存數字,如果定義的表很多,對應的欄位也很多,設計的狀態就非常多,編碼很容易分辨不清楚,一方面去資料庫中檢視相應欄位的註釋非常費時間,而且容易產生差錯,

Java列舉(6.9)

參考《java瘋狂講義》 1. 列舉類入門 java 5 新增enum關鍵字,用以定義列舉類。 它與普通類的區別如下: 列舉類可以實現一個或多個介面,使用enum定義的列舉類預設繼承了java.lang.Enum類,而不是預設繼承Object類,因此列舉類不能顯式繼承繼承其他

Java 列舉使用

列舉類的建立 public enum Season { SPRING("春"), SUMMER("夏"), FALL("秋"), WINTER("冬"); private String name; Season(String name) {

Java列舉的簡單學習(瞭解)

先看一個簡單的列舉類。 package enumcase; public enum SeasonEnum { SPRING,SUMMER,FALL,WINTER; } 1.enum和class、interface的地位一樣 2.使用enum定義的列舉類預設繼承了java.lang.E

java 列舉 getClass和getDeclaringClass的區別

在使用列舉類的時候,建議用getDeclaringClass返回列舉類。但是為什麼不用getClass呢?下面來看看程式碼: public enum FruitEnum{ BA

JAVA 列舉 enum

DEMO1: public class Student { //姓名 private String name; //分數類 private Grade grade; public Student(){} public String getName(

動態修改Java 列舉的值

參考地址:111 package com.itmuch.empty; import javassist.ClassPool; import javassist.CtClass; import javassist.CtField; import sun.refl

java列舉初探-語法糖-反編譯

最近接觸了“語法糖”這個概念,今天又看了一下列舉類的知識點,主要還是看它的用法,之前一直沒有怎麼用過java列舉類,看了李剛那本《瘋狂java講義》的列舉類章節,算是把它的用法弄明白了。 可是列舉類是一種“語法糖”,也就是說只有編譯器知道“enum”關鍵字,j

java列舉使用總結

一.什麼是列舉類  建立例項數量有限並且固定的類,例如季節類,只有4個物件春,夏,秋,冬。這在java就叫作列舉類。 二.怎樣定義列舉類 1.JDK1.5之前採用自定義列舉類,JDK1.5之後採用enum關鍵字 package cn.com.java300.e

Java列舉&註解

JDK的元Annotation用於修飾其他Annotation定義。 JDK5.0提供了專門在註解上的註解型別,分別是: -->@Retention :只能用於修飾一個Annotation定義,用於指定該Annotation可以保留多長時間,@Retention包含一個RetentionPolicy

Java列舉基礎

toString()方法,顯示列舉類元素,上例中對這個方法進行了覆蓋,如果不覆蓋它的話一般列印變數名,上例中為"MEMBER","ADMIN","SUPERADMIN"; valueOf(String arg0)方法,通過傳入的arg0字串解析出一個該列舉類的例項,其中傳入的字串必須是元素列表的名稱之一,否則

JSON庫Jackson優雅序列化Java列舉

![](https://img2020.cnblogs.com/other/1739473/202006/1739473-20200622091327990-378502082.png) ## 1. 前言 在**Java**開發中我們為了避免過多的魔法值,使用列舉類來封裝一些靜態的狀態程式碼。但是在將這些

Java列舉的定義以及使用

   看到這個標題,很多人不禁要問---什麼是列舉類而且為什麼用列舉類呢?那是因為,一些方法在執行時,它需要的資料不能是任意的,而必須是一定範圍內的值,此類問題在JDK5以前採用自定義帶有列舉功能的類解決,Java5以後可以直接使用列舉予以解決。   

java淺析列舉

列舉類是java語言中特殊的類,它是不能被例項化,在定義時,就要建立好要是用的物件,學過c語言的都知道,列舉的作用就是儲存一些不變的,比較公認化的常量,比如月份,一年就只有十二個月,我們可以用列舉型別來定義,以後用的話直接取就行。還有星期,每週只有七天等等之類的東西!!!都說了java中的列

聊聊java中的列舉

1、列舉類是 java.lang.Enum 類的子類,其中RED、GREEN、YELLOW都是Light預定義好的Light的例項。 在執行期間,我們無法再建立新的Enum的例項 public enum Light {    

Java——模板設計模式和列舉的實現

嘗試以MarkdownPad2方式寫部落格,感覺十分有條理,第一次使用花的時間較長,但是熟能生巧,後面會越用越熟練,更快吧~ 1. 模板設計模式 (1).模板方法模式就是定義一個演算法的骨架,而將具體的演算法延遲到子類來實現 (2)優點:使用模板方法模式