java高新技术第一天——枚举详解
2014-03-27 16:47
302 查看
枚举就相当于一个类,其中也可以定义构造方法、成员变量、普通变量、普通方法和抽象方法。
枚举元素必须位于枚举体中的最开始部分,枚举元素列表的后面要有分号与其他成员分隔。
把枚举中的成员方法或变量等放在枚举元素的前面,编译器报告错误。
带构造方法的枚举
构造方法必须定义成私有的
如果有多个构造方法,该如何选择哪个构造方法?
枚举元素MON和MON()的效果一样,都是调用默认的构造方法。
带方法的枚举
定义枚举TrafficLamp
实现抽象的next方法:每个元素分别是由枚举类的子类来生成的实例
对象,这些子类采用类似内部类的方式进行定义。
增加上表示时间的构造方法
枚举只有一个成员时,就可以作为一种单例的实现方式。
package cn.itcast.day1;
import java.util.Date;
public class EnumTest {
public static void main(String[] args) {
/*WeekDay1 weekDay = WeekDay1.MON;
System.out.println(weekDay.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());//把一个串变成枚举元素用valueOf()
System.out.println(WeekDay.values().length);//遍历枚举:先弟阿勇values得到枚举元素的数组,然后再遍历数组
new Date(300){};
}
public enum WeekDay{
SUN(1),//调用第一个构造函数(从0开始的)
MON(),//调用不带参数的构造函数
TUE,WED,THI,FRI,SAT;//为枚举定义构造方法
private WeekDay(){System.out.println("first");}
private WeekDay(int day){System.out.println("second");}
}
//实现带有抽象方法的枚举
public enum TrafficLamp{
RED(30){
public TrafficLamp nextLamp(){
return GREEN;
}
},
GREEN(45){
public TrafficLamp nextLamp(){
return YELLOW;
}
},
YELLOW(5){
public TrafficLamp nextLamp(){
return RED;
}
};
public abstract TrafficLamp nextLamp();
private int time;
private TrafficLamp(int time){this.time = time;}
}
//注:枚举只有一个成员时,就可以作为一种单例的实现方式。
}
枚举元素必须位于枚举体中的最开始部分,枚举元素列表的后面要有分号与其他成员分隔。
把枚举中的成员方法或变量等放在枚举元素的前面,编译器报告错误。
带构造方法的枚举
构造方法必须定义成私有的
如果有多个构造方法,该如何选择哪个构造方法?
枚举元素MON和MON()的效果一样,都是调用默认的构造方法。
带方法的枚举
定义枚举TrafficLamp
实现抽象的next方法:每个元素分别是由枚举类的子类来生成的实例
对象,这些子类采用类似内部类的方式进行定义。
增加上表示时间的构造方法
枚举只有一个成员时,就可以作为一种单例的实现方式。
package cn.itcast.day1;
import java.util.Date;
public class EnumTest {
public static void main(String[] args) {
/*WeekDay1 weekDay = WeekDay1.MON;
System.out.println(weekDay.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());//把一个串变成枚举元素用valueOf()
System.out.println(WeekDay.values().length);//遍历枚举:先弟阿勇values得到枚举元素的数组,然后再遍历数组
new Date(300){};
}
public enum WeekDay{
SUN(1),//调用第一个构造函数(从0开始的)
MON(),//调用不带参数的构造函数
TUE,WED,THI,FRI,SAT;//为枚举定义构造方法
private WeekDay(){System.out.println("first");}
private WeekDay(int day){System.out.println("second");}
}
//实现带有抽象方法的枚举
public enum TrafficLamp{
RED(30){
public TrafficLamp nextLamp(){
return GREEN;
}
},
GREEN(45){
public TrafficLamp nextLamp(){
return YELLOW;
}
},
YELLOW(5){
public TrafficLamp nextLamp(){
return RED;
}
};
public abstract TrafficLamp nextLamp();
private int time;
private TrafficLamp(int time){this.time = time;}
}
//注:枚举只有一个成员时,就可以作为一种单例的实现方式。
}
相关文章推荐
- java枚举使用详解
- Java 枚举(enum) 详解7种常见的用法
- java枚举使用详解(转)
- java枚举使用详解
- 黑马程序员---java高新技术之枚举
- Java 枚举(enum) 详解7种常见的用法
- 黑马程序员 java枚举使用详解
- 【黑马程序员】张孝祥Java高新技术_装箱拆箱、枚举、反射
- Java程序员从笨鸟到菜鸟之(十)枚举,泛型详解
- Java中vector的使用详解、enumeration枚举接口的和iterator的区别、vector与list的对比
- Java高新技术2--JAVA中枚举的各种应用以及单例模式
- java enum(枚举)使用详解 + 总结
- Java枚举(enum) 详解7种常见的用法
- java中的枚举类型详解
- Java 枚举enum 使用详解
- Java高新技术第一天学习日记
- Java高新技术新特性之枚举
- 详解Java中的 枚举与泛型
- java枚举使用详解
- 黑马程序员--张孝祥Java高新技术-JDK1.5新特性(二)【基本数据类型的自动拆箱与装箱,枚举】以及享元设计模式