枚举类也是一种特殊形式的Java类

枚举类中声明的每一个枚举值代表枚举类的一个实例对象

与java中的普通类一样,在声明枚举类时,也可以声明属性、方法和构造函数,但枚举类的构造函数必须为私有的(这点不难理解)。
枚举类也可以实现接口、或继承抽象类。

public class Student {

 private String name;
 private Grade grade;
 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;
 }
}


//让枚举中的每一个对象拥有更多的功能:拥有自己的属性、方法

enum Grade{  //类
 //A.getLocaleValue()  "优"
 //B.getLocaleValue()  "良"
 //E.getLocaleValue()  "差"
 
 A("100-90"){
  public  String getLocaleValue(){
   return "优";
  }
 },B("89-80"){
  public  String getLocaleValue(){
   return "良";
  }
 }
 ,C("79-70"){
  public  String getLocaleValue(){
   return "中";
  }
 }
 ,D("69-60"){
  public  String getLocaleValue(){
   return "及格";
  }
 }
 ,E("59-0"){
  public  String getLocaleValue(){
   return "差";
  }
 };  //类的一个对象  A(100-90)
 private String value;
 private Grade(String value){
  this.value = value;
 }
 public String getValue() {
  return value;
 }
 public abstract String getLocaleValue();
}


//这也是一种单态
enum A{
 A;
}


 

 

 

public enum WeekDay {

 MON("星期一"),TUE("星期二"),WED("星期一"),THU("星期一"),FRI("星期一"),SAT("星期一"),SUN("星期一");
 private String value;
 private WeekDay(String value){
  this.value = value;
 }
 
 public String toLocaleString(){
  return value;
 }
 
}

 

 

 

Juit测试类

public class Demo1 {

 /**枚举的几个常用方法
  * @param args
  */
 public static void main(String[] args) {

  Grade g = Grade.A;
  String  value = g.getValue();
  System.out.println(value);
  
  value = g.getLocaleValue();
  System.out.println(value);
  
  
  //枚举的几个常用方法
  System.out.println(Grade.C.name());
  System.out.println(Grade.C.ordinal());
  
  //把字符串转枚举1
  Grade  g1 = Grade.valueOf(Grade.class, "E");
  System.out.println(g1.getValue());
  
  //把字符串转枚举2
  Grade g3 = Grade.valueOf("A");
  System.out.println(g3.getValue());
  
  //得到枚举类的所有成员
  Grade gs[] = Grade.values();
  for(Grade g2 : gs){
   System.out.println(g2.name());
  }
  
  
  WeekDay wd = WeekDay.MON;
  System.out.println(wd.toLocaleString());
 }
}