Java高新技术新特性之枚举
2012-07-19 22:54
330 查看
[align=center] [/align]
[align=center] [/align]
[align=left] 枚举是JDK1.5出现的新特性,看了张老师的视频,对枚举还是似懂非懂,不知道它的存在意义是什么,什么时候要用,于是就反复看,并上网查资料来深入的理解枚举,还是没有知道使用枚举到底有什么好处,什么时候要用枚举,现在只把,关于枚举的一些基本知识列出,相信在以后的工作当中会从问题中发现枚举的用处的。[/align]
[align=left] 枚举类型是派生自System.Enum的一种独特的值类型,用于声明一组命名的常数。每种枚举类型均有一种基础类型,此基础类型可以使除char类型以外的任何整型。枚举元素的默认基础类型为int 默认情况下,第一个枚举元素的值为0,后面每个枚举元素的值依次递增1。[/align]
其中涉及到的知识点有:
[align=left]1、私有构造方法以及构造方法的访问,默认会执行枚举的无参构造方法,以上代码中的SUN(),TUE,WED,THI,FRI,SAT都是访问的枚举的默认的无参构造方法,可以通过加参数来调用带参数的构造方法,MON(1)访问枚举的private WeekDay(int day){System.out.println("second");};构造方法[/align]
[align=left]2、因为枚举中的元素为枚举类的静态变量,所以只要访问到了枚举类,就会把这些静态变量进行初始化,调用相应的构造方法。[/align]
[align=left]3、枚举中定义公有方法和类中定义方法,用法是一样的。[/align]
[align=left] public String showHello(){[/align]
[align=left] return "Hello";[/align]
[align=left] }[/align]
[align=left]4、定义抽象方法时候,枚举中的每一个元素都要将抽象方法实现,原因是,枚举中的元素是定义的枚举类型,然后枚举中存在抽象方法的话,这些元素是已经构造出来的,不应该再有抽象的方法了[/align]
对枚举的认识暂时就到这个层面上,可能以上说的也会有错误的观点,欢迎大家指正,批评,补充,谢谢!!!
[align=center] [/align]
[align=center] [/align]
[align=center] [/align]
[align=left] 枚举是JDK1.5出现的新特性,看了张老师的视频,对枚举还是似懂非懂,不知道它的存在意义是什么,什么时候要用,于是就反复看,并上网查资料来深入的理解枚举,还是没有知道使用枚举到底有什么好处,什么时候要用枚举,现在只把,关于枚举的一些基本知识列出,相信在以后的工作当中会从问题中发现枚举的用处的。[/align]
[align=left] 枚举类型是派生自System.Enum的一种独特的值类型,用于声明一组命名的常数。每种枚举类型均有一种基础类型,此基础类型可以使除char类型以外的任何整型。枚举元素的默认基础类型为int 默认情况下,第一个枚举元素的值为0,后面每个枚举元素的值依次递增1。[/align]
public class EnumTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub WeekDay1 weekDay = WeekDay1.MON; // System.out.println(weekDay.nextDay().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()); System.out.println(WeekDay.values().length); } public enum WeekDay{ SUN(),MON(1),TUE,WED,THI,FRI,SAT;//元素列表必须放在所有定义的方法之前 private WeekDay(){System.out.println("first");};//执行了七次,只要用到了类,类中的静态变量都会被初始化 private WeekDay(int day){System.out.println("second");}; } }
其中涉及到的知识点有:
[align=left]1、私有构造方法以及构造方法的访问,默认会执行枚举的无参构造方法,以上代码中的SUN(),TUE,WED,THI,FRI,SAT都是访问的枚举的默认的无参构造方法,可以通过加参数来调用带参数的构造方法,MON(1)访问枚举的private WeekDay(int day){System.out.println("second");};构造方法[/align]
[align=left]2、因为枚举中的元素为枚举类的静态变量,所以只要访问到了枚举类,就会把这些静态变量进行初始化,调用相应的构造方法。[/align]
[align=left]3、枚举中定义公有方法和类中定义方法,用法是一样的。[/align]
[align=left] public String showHello(){[/align]
[align=left] return "Hello";[/align]
[align=left] }[/align]
[align=left]4、定义抽象方法时候,枚举中的每一个元素都要将抽象方法实现,原因是,枚举中的元素是定义的枚举类型,然后枚举中存在抽象方法的话,这些元素是已经构造出来的,不应该再有抽象的方法了[/align]
publicpublic enum TrafficLamp{ RED(30){ @Override public TrafficLamp nextLamp() { // TODO Auto-generated method stub return GREEN; } },GREEN(45){//枚举中的每一个元素都要实现枚举中定义的抽象方法,因为他们已经存在了,是这个枚举类的实现,所以要实现其中的抽象方法的 @Override public TrafficLamp nextLamp() { // TODO Auto-generated method stub return YELLOW; } },YELLOW(10){ @Override public TrafficLamp nextLamp() { // TODO Auto-generated method stub return RED; } }; public abstract TrafficLamp nextLamp();//在此处,枚举定义了一个抽象方法 private int time; private TrafficLamp(int time){this.time = time;}//带参数的构造方法,因为这儿显示提供了带参数的构造方法,
//而且,诶有提供默认的无参构造方法,所以,每一个枚举元素通过该方法构造
}
对枚举的认识暂时就到这个层面上,可能以上说的也会有错误的观点,欢迎大家指正,批评,补充,谢谢!!!
[align=center] [/align]
[align=center] [/align]
相关文章推荐
- JavaSE 拾遗(15)——JavaSE 高新技术基础增强...java5简单新特性和枚举
- 黑马程序员——Java高新技术——JDK4.5版本新特性枚举、高级for循环、静态导入、可变参数、基本数据类型的自动装箱与拆箱
- 黑马程序员_java高新技术总结【1】(枚举和部分java新特性)
- 黑马程序员—【Java高新技术】之eclipse开发工具枚举及JDK1.5新特性
- 黑马程序员——【Java高新技术】——JDK1.5新特性:静态导入、可变参数、增强型for循环、自动装箱拆箱、枚举
- 黑马程序员--张孝祥Java高新技术-JDK1.5新特性(二)【基本数据类型的自动拆箱与装箱,枚举】以及享元设计模式
- Java高新技术2--JAVA中枚举的各种应用以及单例模式
- 黑马程序员 java基础加强——jdk1.5新特性—枚举
- Java中的枚举类型-2:高级特性
- 黑马程序员---张老师高新技术之java5新特性2
- 黑马程序员--Java高新技术--JDK1.5新特性(下)
- Java高新技术-jdk1.5简单的新特性
- 高新技术---枚举及部分JDK1.5新特性
- 黑马程序员--java高新技术 25--枚举,反射
- 黑马程序员_java高新技术_JDK1.5新特性
- 黑马程序员---java高新技术之枚举
- Java 基础加强 - JDK1.5 新特性 - 枚举
- 黑马程序员——高新技术---枚举及部分JDK1.5新特性
- 黑马程序员_Java高新技术_枚举
- 01-java基础加强,eclipse工具使用,快捷键,断点调试,单元测试,jdk5新特性,增强for循环,集合map,list,可变参数,枚举,反射,泛型