java-枚舉

定義: 所謂枚舉類型,就是用一組數量有限的標識符來表示一組連續的整型常數,使能夠更清晰的表示出現實世界
枚舉的用法:一些方法在運行的時候,需要的數據類型不是隨意的,它是要在一個範圍內有效的值,就可以用枚舉來解決這個問題
語法格式定義 
	enum 枚舉類的類名{
	//先定義出 對應的 枚舉值
	 //再來寫方法
	}

枚舉的注意點:
	 1.枚舉類型 是一個 特殊的 類  final class 枚舉類名 extends java.lang.Enum 
	 2.枚舉類中 的 枚舉值(man, woman) 默認修飾符 是 public static  final 
	 3.枚舉類中的 枚舉值 它的類型 是 本類類型 Sex類型的 對象
	 4.枚舉類的構造方法 是 private修飾的, 枚舉類 會自內部 自己構造枚舉值
	 5.枚舉類 是可以有成員變量的,但是隻能通過枚舉值 去訪問枚舉類型 的 實例成員變量
	 6.枚舉類 構造的 枚舉值對象,默認是無參構造的,但是你可以通過有參數的構造來構造他們, 這個有參構造 必須是 private修飾的
	 7.枚舉類 也可以有抽象的方法, 但是注意的是 枚舉值必須要實現抽象的方法
	 8.枚舉值 必須是 枚舉類中的 第一個語句
示例代碼:public class Demo{
	public static void main(String[] args) {
        	Student jack = new Student();	
		jack.setAge(33);
		jack.setName("傑克");
		jack.setSex(Sex.man);
		Sex.man.value = "呵呵";
		Sex.value1 = "haha";
		
		System.out.println("jack 的 姓名 : " + jack.getName() + ", 性別是 : " + jack.getSex());
		System.out.println("value : "+ Sex.man.value);  // "hehe"
		System.out.println("value : "+ Sex.woman.value); // null
		System.out.println("value : "+ Sex.value1);
		//Sex s = new Sex();

		Sex.man.test();
		Sex.woman.test();
		
		Sex.man.test1();
		Sex.woman.test1();
	}
}
enum Sex{	
	//定義枚舉值
    man("男"){   	
    	public void test1(){  		
    		System.out.println("man 在 實現抽象方法");
    	}   	
    }, woman("女"){
        public void test1(){	
    		System.out.println("woman 在 實現抽象方法");
    	}	
    }, renyao("人妖"){
    	 public void test1(){
     		System.out.println("人妖   在 實現抽象方法");
     	}
    	
    };//特別注意大括號後面的逗號和分號
    
    //成員變量 
    String value;
    
    static String value1;
    
    //行爲 方法
    //1.構造方法
    private Sex(String value){
    	
    	this.value = value;
    }   
    public void test(){
    	
    	System.out.println("這是枚舉類型的 公開的普通方法 : " + this.value);
    }
    
    //聲明瞭一個抽象方法 
    public abstract void test1();	
}
class Student{
	private String name;
	private int age;
	private Sex sex;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public Sex getSex() {
		return sex;
	}
	public void setSex(Sex sex) {
		this.sex = sex;
	}	
}

遍歷、switch 等常用操作

對enum進行遍歷和switch的操作示例代碼:

public class Test {
    public static void main(String[] args) {
        for (EnumTest e : EnumTest.values()) {
            System.out.println(e.toString());
        }
         
        System.out.println("----------------我是分隔線------------------");
         
        EnumTest test = EnumTest.TUE;
        switch (test) {
        case MON:
            System.out.println("今天是星期一");
            break;
        case TUE:
            System.out.println("今天是星期二");
            break;
        // ... ...
        default:
            System.out.println(test);
            break;
        }
    }
}

輸出結果:

MON
TUE
WED
THU
FRI
SAT
SUN

enum 對象的常用方法介紹

int compareTo(E o) 
          比較此枚舉與指定對象的順序。

Class<E> getDeclaringClass() 
          返回與此枚舉常量的枚舉類型相對應的 Class 對象。

String name() 
          返回此枚舉常量的名稱,在其枚舉聲明中對其進行聲明。

int ordinal() 
          返回枚舉常量的序數(它在枚舉聲明中的位置,其中初始常量序數爲零)。

String toString()

           返回枚舉常量的名稱,它包含在聲明中。

static <T extends Enum<T>> T valueOf(Class<T> enumType, String name) 
          返回帶指定名稱的指定枚舉類型的枚舉常量。

總結

    可以把 enum 看成是一個普通的 class,它們都可以定義一些屬性和方法,不同之處是:enum 不能使用 extends 關鍵字繼承其他類,因爲 enum 已經繼承了 Java.lang.Enum(java是單一繼承)。

以上是我對java中枚舉的部分總覺以及資料查找,若有錯誤,歡迎指正!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章