天天看点

枚举类

枚举类也是一种特殊形式的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"){

   return "良";

 ,C("79-70"){

   return "中";

 ,D("69-60"){

   return "及格";

 ,E("59-0"){

   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 WeekDay(String value){

 public String toLocaleString(){

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(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());

继续阅读