黑马程序员——关于枚举
2013-07-23 18:47
27 查看
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流!----------------------
一、 枚举的作用和定义枚举
枚举是为了规范数据而定义的,在开发中,有些数据不能是任意的,必须只能是某些值。这个时候就需要用到枚举。
枚举类也是一种特殊的Java类,它声明的每一个枚举值代表枚举类的一个实例对象。它也有普通类一样的声明属性、方法和构造函数,但是枚举类的构造函数必须是私有的,使得外部无法对枚举值进行增加。
另外,如果枚举类只有一个枚举值,则它可以当作单例设计模式使用。
枚举类的用法示例代码如下:
enumGrade{//用枚举类可以直接这样写,就可以替代上面的自定义类。
A,B,C,D,E;//这四个值是枚举对象
}
二、 定义枚举的构造函数、方法和字段
enum Grade {//为每个枚举值定义一个参数。
A("100-90"), B("89-80"), C("79-70"), D("69-60"), E("59-0");
private String value;
private Grade(String value){定义有参构造函数
this.value=value;
}
public String getValue(){//返回有参构造函数中传入的参数
return this.value;
}
这里Grade.A.getValue()返回的值就是字符串100-90。
三、 带抽象方法的枚举
如果需要对枚举的每一个枚举对象自定义一个方法,那么需要将方法定义为抽象的,让每一个枚举对象都实现这个方法。示例代码如下:
enum Grade {// class A 100-90优 B 89-80良C 79-70 一般D 69-60差 E 59-0不及格
//每个枚举对象都要复写localValue()这个方法,每个对象返回一个特定的值。
//这里需要注意,只是在每个枚举对象后面添加这个方法,其余代码不变,特别逗号要记得保留。
A{
public StringlocalValue(){
return "优";
}
},
B{
public String localValue(){
return"良";
}
},
C{
public String localValue(){
return "一般";
}
},
D{
public StringlocalValue(){
return"差";
}
},
E{
public String localValue(){
return "不及格";
}
};
public abstract String localValue();//定义一个抽象方法,用于实现优良这个等级。
}
这个方法可以通过Grade.X.localValue()获取对应的值。
四、 常见方法
1、 name():返回此枚举常量的名称;
2、 ordinal():返回枚举常量的序数
3、 valueof(Stringstr):返回带指定名称的指定枚举类型的枚举常量。
那么什么时候需要把字符串转成枚举?
当处理用户通过表单传过来的值是否是你定义的枚举类中的值时,将字符串转成枚举,看看是否会抛出异常;会的话,则用户传过来的值时非法的。
4、 Grade.values():该方法返回的是枚举中所有的枚举值的数组。此方法是API文档中不存在的。
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流!----------------------
详细请查看:http://edu.csdn.net
ASP.Net+Android+IOS开发、.Net培训、期待与您交流!----------------------
一、 枚举的作用和定义枚举
枚举是为了规范数据而定义的,在开发中,有些数据不能是任意的,必须只能是某些值。这个时候就需要用到枚举。
枚举类也是一种特殊的Java类,它声明的每一个枚举值代表枚举类的一个实例对象。它也有普通类一样的声明属性、方法和构造函数,但是枚举类的构造函数必须是私有的,使得外部无法对枚举值进行增加。
另外,如果枚举类只有一个枚举值,则它可以当作单例设计模式使用。
枚举类的用法示例代码如下:
enumGrade{//用枚举类可以直接这样写,就可以替代上面的自定义类。
A,B,C,D,E;//这四个值是枚举对象
}
二、 定义枚举的构造函数、方法和字段
enum Grade {//为每个枚举值定义一个参数。
A("100-90"), B("89-80"), C("79-70"), D("69-60"), E("59-0");
private String value;
private Grade(String value){定义有参构造函数
this.value=value;
}
public String getValue(){//返回有参构造函数中传入的参数
return this.value;
}
这里Grade.A.getValue()返回的值就是字符串100-90。
三、 带抽象方法的枚举
如果需要对枚举的每一个枚举对象自定义一个方法,那么需要将方法定义为抽象的,让每一个枚举对象都实现这个方法。示例代码如下:
enum Grade {// class A 100-90优 B 89-80良C 79-70 一般D 69-60差 E 59-0不及格
//每个枚举对象都要复写localValue()这个方法,每个对象返回一个特定的值。
//这里需要注意,只是在每个枚举对象后面添加这个方法,其余代码不变,特别逗号要记得保留。
A{
public StringlocalValue(){
return "优";
}
},
B{
public String localValue(){
return"良";
}
},
C{
public String localValue(){
return "一般";
}
},
D{
public StringlocalValue(){
return"差";
}
},
E{
public String localValue(){
return "不及格";
}
};
public abstract String localValue();//定义一个抽象方法,用于实现优良这个等级。
}
这个方法可以通过Grade.X.localValue()获取对应的值。
四、 常见方法
1、 name():返回此枚举常量的名称;
2、 ordinal():返回枚举常量的序数
3、 valueof(Stringstr):返回带指定名称的指定枚举类型的枚举常量。
那么什么时候需要把字符串转成枚举?
当处理用户通过表单传过来的值是否是你定义的枚举类中的值时,将字符串转成枚举,看看是否会抛出异常;会的话,则用户传过来的值时非法的。
4、 Grade.values():该方法返回的是枚举中所有的枚举值的数组。此方法是API文档中不存在的。
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流!----------------------
详细请查看:http://edu.csdn.net
相关文章推荐
- 黑马程序员--关于常量、枚举与结构
- 黑马程序员--04关于枚举
- 黑马程序员——关于常量、枚举、结构、异常的总结笔记
- 黑马程序员_关于API1.5新特性之枚举
- 黑马程序员_关于枚举
- 黑马程序员---关于枚举的理解
- 黑马程序员关于常量、枚举、结构的复习
- 黑马程序员---关于对ADO.Net学习的总结
- 黑马程序员_java jdk5.0新特性和枚举的学习笔记
- 关于usb枚举过程set config失败的调查
- 黑马程序员-java基础 枚举
- 黑马程序员_关于io的学习
- 黑马程序员——><基础加强一(eclipse-静态导入-享元设计模式-自动拆装箱-枚举-反射-类加载器)>
- 黑马程序员-枚举
- 黑马程序员————IOS学习笔记 第12篇 关于单例设计模式的认识
- 黑马程序员----JAVA----枚举和反射
- Java的一个关于“星球”的枚举
- 黑马程序员_基础加强_关于反射的一些学习
- 关于Jdk1.5特性 -----黑马程序员
- 黑马程序员--03C结构体和枚举