Java高新技术新特性之枚举

 
 
       枚举是JDK1.5出现的新特性,看了张老师的视频,对枚举还是似懂非懂,不知道它的存在意义是什么,什么时候要用,于是就反复看,并上网查资料来深入的理解枚举, 还是没有知道使用枚举到底有什么好处,什么时候要用枚举,现在只把,关于枚举的一些基本知识列出,相信在以后的工作当中会从问题中发现枚举的用处的。
      枚举类型是派生自System.Enum的一种独特的值类型,用于声明一组命名的常数。每种枚举类型均有一种基础类型,此基础类型可以使除char类型以外的任何整型。枚举元素的默认基础类型为int 默认情况下,第一个枚举元素的值为0,后面每个枚举元素的值依次递增1。
public class EnumTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		WeekDay1 weekDay = WeekDay1.MON;
//		System.out.println(weekDay.nextDay().nextDay());
		WeekDay weekDay2 = WeekDay.FRI;
		System.out.println(weekDay2);
		System.out.println(weekDay2.name());
		System.out.println(weekDay2.ordinal());
		System.out.println(WeekDay.valueOf("SUN").toString());
		System.out.println(WeekDay.values().length);
	}
	
	public enum WeekDay{
		SUN(),MON(1),TUE,WED,THI,FRI,SAT;//元素列表必须放在所有定义的方法之前
		private WeekDay(){System.out.println("first");};//执行了七次,只要用到了类,类中的静态变量都会被初始化
		private WeekDay(int day){System.out.println("second");};
	}
}

其中涉及到的知识点有:
1、私有构造方法以及构造方法的访问,默认会执行枚举的无参构造方法,以上代码中的SUN(),TUE,WED,THI,FRI,SAT都是访问的枚举的默认的无参构造方法,可以通过加参数来调用带参数的构造方法,MON(1)访问枚举的private WeekDay(int day){System.out.println("second");};构造方法
2、因为枚举中的元素为枚举类的静态变量,所以只要访问到了枚举类,就会把这些静态变量进行初始化,调用相应的构造方法。
3、枚举中定义公有方法和类中定义方法,用法是一样的。
    public String showHello(){
                    return "Hello";
                     }
4、定义抽象方法时候,枚举中的每一个元素都要将抽象方法实现,原因是,枚举中的元素是定义的枚举类型,然后枚举中存在抽象方法的话,这些元素是已经构造出来的,不应该再有抽象的方法了
publicpublic enum TrafficLamp{
		RED(30){

			@Override
			public TrafficLamp nextLamp() {
				// TODO Auto-generated method stub
				return GREEN;
			}
			
		},GREEN(45){//枚举中的每一个元素都要实现枚举中定义的抽象方法,因为他们已经存在了,是这个枚举类的实现,所以要实现其中的抽象方法的

			@Override
			public TrafficLamp nextLamp() {
				// TODO Auto-generated method stub
				return YELLOW;
			}
			
		},YELLOW(10){

			@Override
			public TrafficLamp nextLamp() {
				// TODO Auto-generated method stub
				return RED;
			}
			
		};
		public abstract TrafficLamp nextLamp();//在此处,枚举定义了一个抽象方法
		private int time;
		private TrafficLamp(int time){this.time = time;}//带参数的构造方法,因为这儿显示提供了带参数的构造方法,
                                                                   //而且,诶有提供默认的无参构造方法,所以,每一个枚举元素通过该方法构造
	}

            对枚举的认识暂时就到这个层面上,可能以上说的也会有错误的观点,欢迎大家指正,批评,补充,谢谢!!!
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值