您的位置:首页 > 职场人生

黑马程序员——关于枚举

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: