Java中Enum使用总结

时间:2022-09-05 15:30:39

Java中Enum使用总结

1.    为什么使用Enum?

书上抄的,蛮有道理,贴出来给大家看看:当应用中使用一些特定的常量值时,就可以使用enum类,可以保证在编译期间检测应用使用的常量是否合法,避免运行期错误。

代码如下:

public class Students{

    privateString name;

    privateString grade;

    privateStudentGrade grade2

    public enumStudentGrade {

       A,B,C;

    }

    publicStudents(String name) {

       super();

       this.name =name;

    }

    publicString getGrade(){

       return grade;

    }

    public void setGrade(String grade) {

       this.grade =grade;

    }   

    public voidsetGrade2(StudentGrade grade){

       this.grade2 =grade;

    }

    public static voidmain(String[] args) {

       Students Students = newStudents("zzhua");

       Students.setGrade(Grade.A);

       Students.setGrade("E");

      

       Students.setGrade2(StudentGrade.A);

       Students.setGrade2("E");//注意此处回编译出错    

    } 

}

2.    创建Enum

枚举既可以独立申名,也可以在类中申名。

独立申名,代码如下

public enumStudentGrade {

    A,B,C;

}

 

在类中申名

public classEnumTest { 

    public enumGrade{

       A,B,C;

    }

}

3.    Enum类和遍历Enum值

public class EnumTest {

      publicenum Grade{

           A,B,C;

      }

      publicstatic void main(String[] args) {

           //枚举类型的本质是一个java类,编译生成class文件。 Java API中有一个Enum类,所有枚举类型都继承了该类,该类继承了Object类,同时实现了Comparable接口

           System.out.println(Grade.A.compareTo(Grade.C));

           System.out.println(Grade.A.toString());

           System.out.println(Grade.A.ordinal());          

           System.out.println("================================");          

           //任何枚举对象都可以通过枚举名称,调用values方法,返回一个枚举类型的数组,进而使用增强FOR循环遍历enum

           Grade[] grades = Grade.values();

           for(Grade g:grades) {

                 System.out.println(g);

           }

      }

}

4.    Enum中使用构造方法、属性、方法

 

//注意:enum中可以申明属性,也可以申明构造方法,但是构造方法的权限必须是私有的

public enum EnumConstructTest {

      A(12.0),

      B(23.5),

      C(34.7);     

      privatedouble price;

      privateEnumConstructTest(double price) {

           this.price= price;

      }

      publicdouble getPrice(){

           returnthis.price;

      }   

      publicstatic void main(String[] args){

           System.out.println(EnumConstructTest.A.getPrice());

      }   

}

5.    Switch中使用Enum

 

//在switch中使用enum,注意:case后的值直接使用enum中的静态常量即可,不允许使用StudentGrade.A格式,否则会编译错误

public class EnumSwitchTest {

      publicstatic void test(StudentGrade grade) {

           switch(grade) {

           caseA:

                 //dothing

                 break;

           caseB:

                 //dothing

                 break;

           default:

                 break;

           }

      }

      publicstatic void main(String[] args) {

           test(StudentGrade.A);

      }

}