A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hel 中级黑马   /  2013-11-16 15:48  /  1158 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

枚举是什么,怎么使用枚举,举些具体的例子,不是太明白

2 个回复

倒序浏览
        枚举就是要让某个类型的变量的取值只能为若干固定值中的一个,否则编译器就会报错,枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。
给你简单举个例子:
  1. public class TestEnum {
  2.     /*最普通的枚举*/
  3.     public enum ColorSelect {
  4.         red, green, yellow, blue;   
  5.     }

  6.     /* 枚举也可以象一般的类一样添加方法和属性,你可以为它添加静态和非静态的属性或方法,这一切都象你在一般的类中做的那样. */
  7.     public enum Season {
  8.         // 枚举列表必须写在最前面,否则编译出错
  9.         winter, spring, summer, fall;

  10.         private final static String location = "Phoenix";        

  11.         public static Season getBest() {
  12.             if (location.equals("Phoenix"))
  13.                 return winter;
  14.             else
  15.                 return summer;
  16.         }
  17.     }
复制代码

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 山寨

查看全部评分

回复 使用道具 举报
在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且,“数据集”中的元素是有限的。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编译器帮我们做了语法的解析和编译。完全也可以自己实现。但是既然有这样方便一个东西,当然会去用了

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马