黑马程序员_Java中的枚举总结
2011-12-30 13:48
309 查看
----------------------
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?
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?
相关文章推荐
- 黑马程序员_java高新技术总结【1】(枚举和部分java新特性)
- 黑马程序员_JAVA_枚举和反射总结
- 黑马程序员-java枚举总结
- 黑马程序员__JAVA高新技术--枚举及内省JavaBean、可变参数等知识点总结
- 黑马程序员 知识点总结-Java JDK 1.5 新特性和枚举
- 黑马程序员:java中的枚举(总结张老师的讲解内容)
- 黑马程序员:Java基础总结----枚举
- 黑马程序员:Java基础总结----枚举
- 黑马程序员_java IO技术学习总结
- 黑马程序员_java基础知识总结(1)面向对象基础总结
- 黑马程序员—【Java高新技术】之eclipse开发工具枚举及JDK1.5新特性
- 黑马程序员-06-离你很近的java反射技术笔记总结
- 黑马程序员--Java基础加强--16.利用反射操作泛型V【通过Constructor反射解析泛型构造方法】【通过Field反射解析泛型成员变量】【个人总结】
- 黑马程序员_Java高新技术(静态导入、可变参数、增强for循环、自动拆装箱、枚举、反射)
- java高新技术【3】(枚举总结)
- java 基础总结 -- enum 枚举的基础使用
- java enum(枚举)使用详解 + 总结
- 黑马程序员_Java继承、多态、接口零碎知识总结
- 黑马程序员---Java基础总结---语句、函数、数组
- 黑马程序员——java基础----集合框架知识点总结(一)