1. 程式人生 > >JAVA 列舉類 enum

JAVA 列舉類 enum

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

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Grade getGrade() {
		return grade;
	}

	public void setGrade(Grade grade) {
		this.grade = grade;
	}
	
}

//分數列舉類
public enum Grade {
    A("A","90-100"),
    B("B","80-89"),
    C("C","70-79"),
    D("D","60-69"),
    E("E","<60");
    private String tip;
    private String desc;
    private Grade(String tip,String desc){
        this.tip = tip;
        this.desc = desc;
    }
    public String getTip() {
        return tip;
    }
    public String getDesc() {
        return desc;
    }
}

public class Demo1 {
	public static void main(String[] args) throws Exception {
		Student student = new Student();
		student.setName("jack");
		student.setGrade(Grade.B);
		System.out.println("姓名:" + student.getName());
		System.out.println("等級:" + student.getGrade().getTip());
		System.out.println("分數區間:" + student.getGrade().getDesc());
	}
}
////////////////////////////////////////////////
DEMO2 :
//季節列舉類
public enum Season{
    SPRING{
        public void show(){
            System.out.println("春天");
        }
    },SUMMER{
        public void show(){
            System.out.println("夏天");
        }
    },AUTOMN{
        public void show(){
            System.out.println("秋天");
        }
    },WINNTER{
        public void show(){
            System.out.println("冬天");
        }
    };
    //抽像方法
    public abstract void show();
}
為什麼需要列舉?
一些方法在執行時,它需要的資料不能是任意的,而必須是一定範圍內的值,此類問題在JDK5以前採用自定義帶有列舉功能的類解決,Java5以後可以直接使用列舉予以解決。
列舉類具有如下特性:
列舉類也是一種特殊形式的Java類。
列舉類中宣告的每一個列舉值代表列舉類的一個例項物件。
與java中的普通類一樣,在宣告列舉類時,也可以宣告屬性、方法和建構函式,但列舉類的建構函式必須為私有的(這點不難理解)。
列舉類也可以實現介面、或繼承抽象類。
JDK5中擴充套件了switch語句,它除了可以接收int, byte, char, short外,還可以接收一個列舉型別。
若列舉類只有一個列舉值,則可以當作單態設計模式使用。
Java中宣告的列舉類,均是java.lang.Enum類的孩子,它繼承了Enum類的所有方法。常用方法:
name()
ordinal()
valueOf(Class enumClass, String name)
values() 此方法雖然在JDK文件中查詢不到,但每個列舉類都具有該方法,它遍歷列舉類的所有列舉值非常方便。