黑马程序员--枚举类(enum)

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

 

通过下面的一个实例,可以了解枚举类的一些用法:

 public enum WeekDay  {

SUN,MON,TUE,WED,THU,FRI,SAT;     //创建一个枚举类(最后的分号可以不要)

}

1.   WeekDay  weekDay = WeekDay.FRI;

      System.out.println(weekDay);

      System.out.println(weekDay.name());     //效果和上面的一样

获取的是一个对象,但是在打印的时候,自动实现了toString()方法,因此结果就是FRI。

2.  System.out.println(weekDay.ordinal());

返回的是该对象在枚举类中的序列号(从0开始),结果为5。

3.  weekDay.compareTo(o);
     weekDay.equals(other);

这两个是用来比较两个对象时否相等。

4.  System.out.println(weekDay.getClass());

获取定义自己的类(WeekDay)。

枚举类中的静态方法:

System.out.println(WeekDay.valueOf("SUN"));

System.out.println(WeekDay.valueOf("SU"));    //编译出错

将字符串 SUN  转化成枚举对象中的元素(值得注意的是,如果传入的字符串不是枚举类中的元素,编译就出错)。

System.out.println(WeekDay.values());       //将枚举类中的元素放在一个数组中
for(WeekDay weekDay : WeekDay.values()) {     //增强for循环遍历数组的元素
   System.out.println(weekDay);
  }

该静态方法可以用来遍历枚举类中的元素……

 

枚举类的构造函数

 public enum WeekDay  {

SUN,MON,TUE,WED,THU,FRI,SAT;  

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

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

}

创建构造函数时注意:

①创建的构造函数必须位于元素列表之后

②创建的构造函数的类型必须为private

在枚举类的对象被创建时,默认调用的是无参的构造函数(上面调用的都是调用WeekDay()这个无参的构造函数),所以打印的结果为:
First
First
First
First
First
First

如果在调用有参的构造函数,要在枚举元素的后面加一个括号,里面传一个参数,如下:

public enum WeekDay  {

SUN(1),MON,TUE,WED(4),THU,FRI,SAT;  

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

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

}

打印的结果为:

Second
First
First
Second
First
First
First

因此括号里面不传参数,也是调用无参的构造函数(和不加括号的效果一样)。

 

枚举类中的抽象方法(交通灯的实例)

在枚举类中可以定义抽象方法时,但是在定义枚举元素的时候,就必须实现这个抽象方法。

public enum TrafficLamp {
  RED(30){
   public  TrafficLamp  nextLamp() {
    return GREEN;
   }
  },
  GREEN(45){
   public  TrafficLamp  nextLamp() {
    return YELLOW;
   }
  },
  YELLOW(5) {
   public TrafficLamp  nextLamp() {
   return RED;
   }
  };
  public abstract TrafficLamp  nextLamp();
  private int time;
  private TrafficLamp(int time) {     //构造函数
   this.time = time;
  }
 }

这个实例综合了上面所学到的枚举类中的所有知识点,也是枚举类中最复杂的。

值得注意的是:当枚举只有一个成员时,就可以作为一种单例的实现方式……

 

----------------------- android培训java培训、java学习型技术博客、期待与您交流! ----------------------

详情请查看:http://edu.csdn.net/heima

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值