黑马程序员技术交流社区
标题:
枚举
[打印本页]
作者:
hel
时间:
2013-11-16 15:48
标题:
枚举
枚举是什么,怎么使用枚举,举些具体的例子,不是太明白
作者:
敗唫①輩ふ
时间:
2013-11-16 15:54
枚举就是要让某个类型的变量的取值只能为若干固定值中的一个,否则编译器就会报错,枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。
给你简单举个例子:
public class TestEnum {
/*最普通的枚举*/
public enum ColorSelect {
red, green, yellow, blue;
}
/* 枚举也可以象一般的类一样添加方法和属性,你可以为它添加静态和非静态的属性或方法,这一切都象你在一般的类中做的那样. */
public enum Season {
// 枚举列表必须写在最前面,否则编译出错
winter, spring, summer, fall;
private final static String location = "Phoenix";
public static Season getBest() {
if (location.equals("Phoenix"))
return winter;
else
return summer;
}
}
复制代码
作者:
付凯鹏
时间:
2013-11-16 16:57
在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且,“数据集”中的元素是有限的。Enum一般用来表示一组相同类型的常量。如性别,日期、月份、颜色、春夏秋冬等都构成了其相对应的数据集。对这些属性用常量的好处是显而易见的,不仅可以保证单例,且比较时候可以用“==”来替代equals。是一种好习惯。在JDK1.5之前,我们定义常量都是:public static fianl···········;现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。
我们也可以实现带有构造器的枚举:
public enum Gender{
//通过括号赋值,而且必须带有一个参构造器和一个属性跟方法,否则编译出错
//赋值必须都赋值或都不赋值,不能一部分赋值一部分不赋值;如果不赋值则不能写构造器,赋值编译也出错。
MAN("MAN"),WOMEN("WOMEN");
private final String value;
//构造器默认也只能是private,从而保证构造函数只能在内部使用
private Gender(String value){
this.value=value;
}
public String getValue(){
return value;
}
}
通过例子,就让我们认识一下java Enum的原理。
java Enum类型的语法结构尽管和java类的语法不一样,应该说差别比较大。但是经过编译器编译之后产生的是一个class文件。该class文件经过反编译可以看到实际上是生成了一个类,该类继承了java.lang.Enum<E>。所以实际上Enum类型就是以Java类来实现的,没有什么新的特点,只不过java编译器帮我们做了语法的解析和编译。完全也可以自己实现。但是既然有这样方便一个东西,当然会去用了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2