黑马程序员_java高新之枚举类型

本文深入介绍了Java中的枚举类型,包括基本概念、定义方法及高级应用。解释了如何利用枚举实现单例模式,并展示了如何定义包含构造方法、成员变量、普通方法和抽象方法的枚举类。

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

1、枚举类型简介

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

定义一个枚举类型的类

public enum EnumWeekday{
		
//		枚举元素必须位于枚举体中的最开始部分,且以封号结尾
		MON,TUS,WED,THU,FRI,SAU,SU;
		
	}
 

2)另外:枚举是一种特殊的类,其中的每个元素都是该类的一个实例对象,每次使用都会调用相对应的构造方法

进行初始化,如果没写构造方法,就使用默认的无参构造器  

上面的代码修改如下:

	public enum EnumWeekday{
		
		//在元素对象后面跟上括号,枚举元素后面括号里的参数有无和多少,就能确定对象创建时使用的是哪个构造方法
		MON(1),TUS(),WED,THU,FRI,SAU,SUN();
	
		private EnumWeekday(){System.out.println("first");};
		private EnumWeekday(int n){System.out.println("second");};
		
	}
上面的代码修改后,每次使用枚举类型中的元素时,就会调用相应的已写好的构造方法进行初始化。

2、枚举的高级运用

1)枚举就相当于一个类,其中也可以定义构造方法、成员变量、普通方法和抽象方法。

定义一个类,包括成员变量,自定义的构造方法,抽象方法和内部方法的实现。
public enum TrafficLamp{
		
		
              //调用父类的构造方法,并且匿名内部类实现TrafficLamp的子类方法,子类方法返回的是枚举元素,RED是一个实例对象,没有参数或者参数为空需要系统由默认构造器创建
		RED(10){

			@Override
			public TrafficLamp next() {
				return GREEN;
			}
			
			
		},GREEN(20){

			@Override
			public TrafficLamp next() {
				return YELLOW;
			}
			
		},YELLOW(30){

			@Override
			public TrafficLamp next() {
				return RED;
			}
			
		};
	
		private int time;
		//构造方法必须是私有的
		private TrafficLamp(int time){this.time = time;}
		//在枚举类中定义抽象方法,让枚举类的子类实现这个方法,此处我们用的是匿名内部类
		public abstract TrafficLamp next();		
	}
上面的枚举类型的定义时,使用抽象方法next()的定义,且在代码中实现了抽象方法next(),抽象的next方法:每个元素
可以通过调用next() 得到下一个枚举类型的实例对象,枚举元素内部实现子类采用类似内部类的方式进行定义。  


2)枚举只有一个成员时,就可以作为一种单例的实现方式,因为枚举的构造参数是私有的,定义了一个元素的枚举,就是单例的。
如下:
	public enum EnumSingle{
		
		ONO;
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值