Enum Class (枚舉類)- 入門


枚舉類

如果一個類的對象是有限和固定的,則可以使用枚舉類。本筆記,主要介紹基本的枚舉類使用:基本語法和實例。

目錄

正文

1. 枚舉類-語法

1.1 枚舉類與普通類相同之處

* enum 與 class、interface 具有相同地位; * 可以繼承多個接口; * 可以擁有構造器、成員方法、成員變量;

1.2 枚舉類與普通類不同之處

* 默認繼承 java.lang.Enum 類,所以不能繼承其他父類;其中 java.lang.Enum 類實現了 java.lang.Serializable 和 java.lang.Comparable 接口; * 使用 enum 定義,默認使用 final 修飾,因此不能派生子類; * 構造器默認使用 private 修飾,且只能使用 private 修飾; * 枚舉類所有實例必須在第一行給出,默認添加 public static final 修飾,否則無法產生實例;

1.3 實例

```java public class Demo {
public static void main(String[] args) {
	for(Season s : Season.values()) {	//values() 方法,返回 Season[] 枚舉值集合
		new SeasonTest().judge(s);
	}
}

}

enum Season {
SPRING, SUMMER, FALL, WINTER;
}

class SeasonTest {

public void judge(Season s) {
	switch(s) {	//JDK 1.5 之后,switch 支持枚舉類型;且,case 后面可以直接書寫枚舉值,不需要限定
	case SPRING:
		System.out.println("Spring");
		break;
	case SUMMER:
		System.out.println("Summer");
		break;
	case FALL:
		System.out.println("Fall");
		break;
	case WINTER:
		System.out.println("Winter");
		break;
	}
}


<h3 id="1.4"> 1.4  成員變量、構造器和方法</h3>
#### 1.4.1 成員變量實例
```java
public class Demo {
	public static void main(String[] args) {
		// valueOf 是 Enum 中的靜態方法,用於:返回指定枚舉類中,指定名稱的枚舉值
		// 源碼聲明:
		// public static <T extends Enum<T>> T valueOf(Class<T> enumType, String name)
		Gender tom = Gender.valueOf(Gender.class, "FEMALE");
		tom.name = "female";
		System.out.println(tom + " + " + tom.name);
	}
}

enum Gender {
	MALE, FEMALE;
	public String name;
}

1.4.2 構造器

enum Gender {
	MALE("男"), FEMALE("女");
	private final String name;    //應該設置成 private final 
	private Gender(String name) {    // 應該設置成 private
		this.name = name;
	}
	
	public String getName() {
		return this.name;
	}
}

1.4.3 方法

//1. 實現接口方法(1)
interface Info {
	void info();
}
enum Gender implements Info{
	MALE("男"), FEMALE("女");
	private final String name;
	private Gender(String name) {
		this.name = name;
	}
	
	public String getName() {
		return this.name;
	}

	@Override
	public void info() {
		// 此時兩個值調用的方法是相同的
	}
}
////1. 實現接口方法(2)
interface Info {
	void info();
}
enum Gender implements Info{
	MALE("男") {

		@Override
		public void info() {
			//  分別實現接口方法
			
		}
		
	}, 
	FEMALE("女") {

		@Override
		public void info() {
			// 分別實現接口方法
			
		}
		
	};
	private final String name;
	private Gender(String name) {
		this.name = name;
	}
	
	public String getName() {
		return this.name;
	}

}
//2. 實現 Enum 中的抽象方法
enum Gender {
	MALE("男"){

		@Override
		public void info() {
			// TODO Auto-generated method stub
			
		}
		
	},FEMALE("女"){

		@Override
		public void info() {
			// TODO Auto-generated method stub
			
		}
		
	};
	private final String name;
	private Gender(String name) {
		this.name = name;
	}
	
	public String getName() {
		return this.name;
	}
	
	public abstract void info();

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM