---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
由于最初对计算机语言的掌握不是很好,一直以来以为枚举在java中应用不多,在学完基础部分和高新技术后,发现枚举其实是一个很重要的东西,尤其在交通灯系统和银行系统中都有应用,而且所占比列不小,加之在基础部分的io技术中也使用到了枚举,所以根据最近所学对枚举的使用做一点总结。
1. 首先java的枚举是jdk1.5以后才有的新特性,虽然只是一点小功能,却给我们的开发带来了极大方便。张老师的星期演示就是一个很好的列子,如果普通类,要限制该类型变量只能是列举出来的固定值中的一个,会有很多麻烦的地方,但是用了枚举,只需将实例对象一一列举即可,极大的方便了代码开发。
2. 枚举的特点是:该类实例对象只能是例举出来的若干个值中的一个,这在需要使用特定值来限定取值范围的时候应用较多。
3. 在io的学习中,文件合并需要将多个输入流合并为一个,使用到了SequenceInputStream对象,但是该对象的参数是一个封装了各输入流的枚举,这里又用到了Collections工具类的静态方法enumeration,他将一个Collection装换为枚举。
4. 在switch语句中,其参数表达式只能接收两种类型的值,一是int类型,再者就是枚举了。
5. 在交通灯系统和银行业务调度系统中,使用到了枚举,而且在这两个例子中,枚举的使用都有举足轻重的地位。因为交通灯和和服务客户类型都是固定的几个值,因此使用枚举得到了极大方便。
在张老师的高新技术中,对枚举作了特别的讲解,下面是针对视频内容做的一点总结。
1. 枚举的构造方法时私有的,因为不能让外界创建该类对象。其构造方法可带参数,即枚举内部也可以由私有属性,在创建枚举对象时将对应参数进行传递。
2. 当枚举只有一个元素时,他就相当于一个单列。单列的特点是构造器私有化,内存中只有一个共享的该类对象。
3. 定义抽象方法,让子类去实现,即在创建本类对象时进行实现,可以省去大量的ifelse语句,个人认为这对运行效率有很大提高。
4. 如果枚举的构造函数的参数使用到了自身类型的对象,那么可以使用与该对象的字符串表现形式,然后使用valueOf方法得到本来对象,其实就是换了个方式而已。
5. 在使用枚举时,如果一个枚举对象被用类名.实例的方式获取,那么该枚举所以元素对应的构造器都将运行一次。
6. 另外还学到了枚举的name,ordinal,values等方法,需在以后的使用中加以注意,如name方法在银行系统中就进行了应用。
以上知识均来自于java视频教程,因为学习周期较长,很大部分可能并不完善,在以后的学习和对枚举的使用,将足步增加对枚举的了解。
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------