黑马程序员-枚举

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

 枚举:

java1.5后加回了c语言的枚举功能。

枚举就是让某个类型的变量的取值只能为若干个固定值中的一个,否则编译器会报错。

枚举可以在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。

 

使用java普通类可以模拟枚举的功能,易于理解java的枚举。代码如下:

public class WeekDay{
 private WeekDay(){}
 public final static WeekDay SUN = new WeekDay();
 public final static WeekDay MON = new WeekDay();
 
 public WeekDay nextDay(){
 if(this==SUN){
  return MON;
 }
 if(this==MON){
  return SUN;
 }
 }
 
 public String toString(){
  return this==SUN?"SUN":"MON";
 }
}

采用抽象方法设计思想优化:--->

public abstract class WeekDay{
 private WeekDay(){}
 public final static WeekDay SUN = new WeekDay(){
  public WeekDay nextDay(){
   return MON;
  }
 };
 public final static WeekDay MON = new WeekDay(){
  public WeekDay nextDay(){
   return SUN;
  }
 };
 
 public abstract WeekDay nextDay();
 public String toString(){
  return this==SUN?"SUN":"MON";
 }
}


要点:

1,私有构造方法。

2,每个元素分别用一个公有的静态成员变量表示。

3,可以有若干公有方法或抽象方法。例如采用抽象方法定义nextDay()就将大量的if、else语句转移成了一个个独立类。

 

java中的枚举类(enum):

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");}
}
/*
1,构造方法必须放在元素列表下面。
2,元素胡加上小括号表示用枚举的有参方法。
*/


枚举类的常用方法

String name()

int ordina()

静态方法:

valueOf(String arg0) 返回:枚举类型

values() 返回:枚举类型数组(用于遍历很嗨)

 

枚举类描述交通灯:

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();
private int time;
public TrafficLamp(int time){this.time = time}
}


 

---------------------- Android培训Sjava培训、期待与您交流! ----------------------

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值