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