黑马程序员——java高新技术:枚举

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

枚举是java1.5版本的新特性。

1,枚举是什么?

就是让某个类型的变量的取值只能为若干个固定值中的一个。可以让编译器在编译时就可控制,避免出错。

2.枚举的应用

(1)定义枚举使用 的关键字是enum,定义一个最简单的枚举。

public class EnumText {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		WeekDay weekDay1 = WeekDay.MON;
	}
	
	public enum WeekDay{
		SUN,MON,WED,THT,FRI,SAT;
		
	}
}
这就是一个最简单的枚举。
(2)我们在看一个枚举

public enum TraffictLamp{
		RED(30) {
					@Override
					public TraffictLamp nextLamp() {
						// TODO Auto-generated method stub
						return GREEN;
					}
				},
		GREEN(35) {
			@Override
			public TraffictLamp nextLamp() {
				// TODO Auto-generated method stub
				return YELLOW;
			}
		},
		YELLOW(5) {
			@Override
			public TraffictLamp nextLamp() {
				// TODO Auto-generated method stub
				return RED;
			}
		};
		public abstract TraffictLamp  nextLamp();
		private int time;
		private TraffictLamp(int time){this.time = time;}
	}
枚举的几个特性:

1、构造方法必须是private访问权限。

2、每一个元素(REDYELLOWBLACK)就是枚举类TraffictLamp的一个实例元素

3、枚举中可以有抽象方法,但是和定义普通类中抽象方法时,普通类必须是抽象类,而枚举不用,但是因为枚举类中有实例元素且有抽象方法,实例元素在定义时必须实现抽象方法。并且元素要看构造方法来具体定义。本例中定义了一个有参数的构造方法。

4,枚举是一种特殊的类,其中的每一个元素都是该类的一个实例对象,如果枚举只有一个成员时(也可以说是元素),就可以作为一种单例的实现方式。单例可以看做是一种枚举。

枚举的基本应用:常有方法有values()valueOf()name()toString()ordinal()

values():获取的是该枚举类数组,为无参方法。

valueOfString name):获得传入的字符串对应的枚举类型元素。注意传入的字符串要和枚举元素大小写一模一样。

name():获得当前枚举类型元素的名字。

toString():name()方法一样,获得当前枚举类型元素的名字

ordinal():获得当前枚举元素的在枚举中序号。


枚举总结:

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

2枚举元素必须位于枚举体中最开始部分,枚举元素列表的后面没有其他成员时可以省略分号,若有其他成员则要用分号进行分割。

3、枚举只有一个成员时,可以作为一种单例的实现方法。

 

带有构造方法的枚举:

 1、构造方法必须定义为私有。

2、如果有多个构造方法,枚举元素可以根据需要,调用相应的构造方法。

带有方法的枚举:

定义枚举,有抽象方法时,每个元素都是该枚举的一个实例对象,所以每个元素都必须实现抽象方法,采用类似匿名类的方式进行实现。




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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值