黑马程序员_枚举

------- android培训java培训、期待与您交流! ---------- 

 

枚举

JDK1.5引入了新的类型——枚举。在 Java中它虽然算个“小”功能,却给我的开发带来了“大”方便。

枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错,枚举可以让编译器编译时就可以控制原程序中的非法值。

1)枚举是一个特殊的类,其中每个元素都是该类的一个实例对象,其中可以定义构造方法,成员变量,普通方法和抽象方法。

2)枚举元素必须位于枚举体中最开始的部分,枚举元素列表后面要有分号与其他成员分隔。把枚举中的成员方法和变量放在美居元素的前面,编译器报告错误。

3)带构造方法的枚举:构造方法必须定义成私有的

4)实现带有抽象方法的枚举,每个元素分别是由枚举的子类来生成的实例对象,这些子类采用类似内部类的方式进行定义。

5)当枚举只有一个成员时,就可以作为一种单利的实现方式

用法一:常量

JDK1.5之前,我们定义常量都是: public static fianl ....现在有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举还提供了比常量更多的方法。

示例:

public enum Color {   

          RED,GREEN, BLANK, YELLOW

}  

用法二switch

JDK1.5之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。

示例:

public class TrafficLight {   

  Signal color = Signal.RED;   

  publicvoid change() {   

     switch (color) {   

      case RED:   

         color = Signal.GREEN;   

          break;   

       case YELLOW:   

           color = Signal.RED;   

           break;   

       case GREEN:   

           color = Signal.YELLOW;   

           break;   

       }   

  }   

}   

 用法三:向枚举中添加新方法

如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且 Java 要求必须先定义 enum实例。

示例:

public enum Color {   

  RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);   

   //成员变量   

  privateString name;   

 privateint index;   

  //构造方法   

   privateColor(String name, int index) {   

      this.name = name;   

      this.index = index;   

  }   

   //普通方法   

  publicstatic String getName(int index) {   

      for (Color c : Color.values()) {   

          if (c.getIndex() == index) {   

              return c.name;   

          }   

       }   

       return null;

  }

  publicString getName() {   

       return name;   

    }   

   publicvoid setName(String name) {   

      this.name = name;   

  }   

  publicint getIndex() {   

      return index;   

   }   

  publicvoid setIndex(int index) {   

       this.index = index;   

   }   

}

用法四:覆盖枚举的方法   

 示例:toString()方法覆盖的例子

public enum Color {   

  RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);   

  //成员变量   

  privateString name;   

  privateint index;   

  //构造方法   

  privateColor(String name, int index) {   

      this.name = name;   

      this.index = index;   

  }   

 //覆盖方法   

 @Override   

  publicString toString() {   

    return this.index+"_"+this.name;   

  }   

}  

用法五: 关于枚举集合的使用

java.util.EnumSetjava.util.EnumMap是两个枚举集合。EnumSet保证集合中的元素不重复;EnumMap中的 keyenum类型,而value则可以是任意类型。关于这个两个集合的使用可以参考JDK文档。

 

两个小练习:

1.定义一个weekday枚举

代码如下:

public enum WeekDay{

             SUN(1),MON(),TUE,WED,THI,FRI,SAT;

             private WeekDay(){System.out.println("first");};

             private WeekDay(int day){System.out.println("second");};

      }

2.定义一个交通灯枚举

代码如下:

public enum TrafficLamp{

                    RED(30){

                           public TrafficLamp nextLamp(){

                                  returnGREEN;

                           }

                    },

                    GREEN(40){

                           public TrafficLamp nextLamp(){

                                  returnYELLOW;

                           }

                    },YELLOW(5){

                           public TrafficLamp nextLamp(){

                                  returnRED;

                           }

                    };

                    publicabstract TrafficLamp nextLamp();

                    privateint time;

                    privateTrafficLamp (int time){this.time= time;};

          };

------- android培训java培训、期待与您交流! ---------- 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值