package cn.itcast.day1;
import java.util.Date;
/*
* 枚举总结:1,如果想要一种类型的值,按照我们预期的方式去赋值,我们可以把这个
* 变量定义成枚举类型。让赋值规范化。
* 2,定义枚举列表时,如果这个枚举有构造函数,列表后面必须要有;号标识。
* 并且列表要放在枚举的第一行。构造方法必须要private
* 3,枚举默认为调用空参数的构造函数,如果想要调用带参数的,可以加上
* 列表元素(参数)的方式去调用。
* 4,如果枚举中有抽象方法,那么,枚举列表中的 每个元素都得实现该抽象方法。
* 列表元素(可以加参数){实现抽象方法}。
* 5,因为构造方法是private类型的 ,所以可以用枚举实现单例模式
* */
public class EnumTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//用普通类来模拟一个枚举
WeekDay1 weekDay = WeekDay1.SUN;
System.out.println(weekDay.nextDay().toString());;
System.out.println(WeekDay1.MON);
WeekDay weekDay2 = WeekDay.FRI;
System.out.println(weekDay2);
System.out.println(weekDay2.name());
System.out.println(weekDay2.ordinal());
//把一个字符串变成一个枚举对象中的元素
System.out.println(WeekDay.valueOf("SUN"));
//将枚举中的元素变成数组
WeekDay[] wds = WeekDay.values();//会调用默认构造函数
for(WeekDay wd:wds){
System.out.println("..."+wd);
}
//System.out.println(WeekDay.values().length);
new Date(300){};
}
public enum WeekDay
{
SUN(),MON(1),TUE,WED,THI,FRI,SAT;//元素列表,所有的方法信息,列表元素其实就是枚举类型的对象
//必须位于期之后,此元素列表后必须由;号,默认调用空的构造方法
//可以在元素后面加()参数调用指定的构造方法
private WeekDay(){System.out.println("first");};//构造方法必须私有
private WeekDay(int i){System.out.println("secend");};
}
public enum TrafficLamp
{
//列表元素其实就是枚举类型的对象,必须要实现本类对象的抽象方法。
RED(30){
public TrafficLamp nextLamp(){
return GREE;
}
},GREE(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;}
}
}
黑马程序员,枚举总结
最新推荐文章于 2024-10-22 15:51:09 发布