黑马程序员_Java中的枚举总结

8 篇文章 0 订阅
1 篇文章 0 订阅

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

一、什么是枚举?

枚举相当于一个类,可以定义成员变量,构造方法,抽象方法和普通方法。
JDK1.5中,Java语言定义了枚举类型的公共基本类Enum(抽象类)。
枚举知识点:
1.枚举中的每个成员变量都是该枚举的一个实例,即虽然只写了一个变量但隐含的在创建一个对象。
2.枚举的成员变量(元素)必须位于枚举体中的最开始部分。若把元素放在后面,编译器会报错。
3.当枚举元素列表后面 没有内容时,元素列表后面可以没有分号。有内容时,元素列表后面必须要有分号与其它成员分隔开。

二、为什么要有枚举?
枚举就是为了 让某一类型的变量的取值,只能是某几个固定值中的一个。否则,编译失败。就像Calendar日历类中的星期只能用那7个固定的值。
枚举可以让编译器在编译阶段就可控制源程序中填写的非法值,普通变量的方式在开发阶段(编译阶段)无法实现这一目标。


三、枚举的应用
自定义枚举类:用普通类实现枚举,就是将定义类的class换成enum。
1.带构造方法的枚举:元素的后面没有括号或者括号内容为空,则调用的是无参构造函数。
 元素的后面的括号中有内容,则调用的是有参构造函数。
2.带抽象方法的枚举:就是用匿名类来实现的。方法是在元素的后面跟上一对大括号,大括号中是重写抽象方法和匿名类自己的内容。
3.最复杂的枚举:抽象、构造方法都有,就是将两者结合。
枚举只有一个元素时,就可以作为一种单例的实现方式。
public class EnumTest {
public static void main(String[] args) {

/*
WeekDay1 weekday=WeekDay1.SUN;
System.out.println(weekday.nextDay());

WeekDay weekday2=WeekDay.SUN;
System.out.println(weekday2.getClass());
System.out.println(weekday2.valueOf("SUN").toString());
*/
TrafficLamp traLamp=TrafficLamp.RED;
System.out.println(traLamp.getClass());
System.out.println(traLamp.nextColor().name());
}
//带有构造方法的枚举
public enum WeekDay{
SUN(2),MON(),TUE,WEN,THU,FRI,SAT;
private WeekDay(){}
private WeekDay(int i){
System.out.println(i);//输出2
}
}
//带有抽象方法的枚举
public enum TrafficLamp{
RED(30){//这是一个元素。这个元素是由TrafficLamp的一个子类来实现的。RED指向了这个元素。
public TrafficLamp nextColor(){
return GREEN;
}
},YELLOW(5){//此时调用的是有参构造函数
public TrafficLamp nextColor(){
return RED;
}
},GREEN(45){
public TrafficLamp nextColor(){
return YELLOW;
}
};
public abstract TrafficLamp nextColor();
private int time;
private TrafficLamp(int time){
this.time=time;
}
private TrafficLamp(){}
}
}

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

                                 ----------------------详细请查看:http://edu.csdn.net/heima?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值