5.枚举Enum -- 每一个值都是一个对象(元素、类)
定义 -- public enum WeekDay{
SUN,MON,TUS,WED,THI,FRI,SAT;
}
声明 -- WeekDay weekDay = WeekDay.FRI;
方法 weekDay.name(); 对象名
weekDay.toString(); 对象内容
weekDay.ordinal(); 返回对像的索引值
静态方法 -- WeekDay.valueOf("SUN"); 以"SUN"中的字符串为内容创建对象
-- WeekDay.values(); 返回一个WeekDay数组,内容为WeekDay中的所有元素
带有构造方法的枚举
public enum WeekDay{
SUN(1),MON(),TUS(),WED,THI,FRI,SAT;
private WeekDay(){System.out.println("aaaa");} // private第一个构造方法,MON(),TUS(),WED,THI,FRI,SAT调用这个构造方法
private WeekDay(int day){System.out.println("bbb");} // private第二个构造方法,SUN(1)调用此构造方法
}
带有抽象方法的枚举
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(){} //无参构造函数
private TrafficLamp(int time){this.time = time;} //有参构造函数
}
枚举中只有一个成员时,就可以作为一种单例的实现方式-----单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类
定义 -- public enum WeekDay{
SUN,MON,TUS,WED,THI,FRI,SAT;
}
声明 -- WeekDay weekDay = WeekDay.FRI;
方法 weekDay.name(); 对象名
weekDay.toString(); 对象内容
weekDay.ordinal(); 返回对像的索引值
静态方法 -- WeekDay.valueOf("SUN"); 以"SUN"中的字符串为内容创建对象
-- WeekDay.values(); 返回一个WeekDay数组,内容为WeekDay中的所有元素
带有构造方法的枚举
public enum WeekDay{
SUN(1),MON(),TUS(),WED,THI,FRI,SAT;
private WeekDay(){System.out.println("aaaa");} // private第一个构造方法,MON(),TUS(),WED,THI,FRI,SAT调用这个构造方法
private WeekDay(int day){System.out.println("bbb");} // private第二个构造方法,SUN(1)调用此构造方法
}
带有抽象方法的枚举
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(){} //无参构造函数
private TrafficLamp(int time){this.time = time;} //有参构造函数
}
枚举中只有一个成员时,就可以作为一种单例的实现方式-----单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类