JAVA综合--如何掌握JDK1.5枚举类型
疯狂源自梦想,技术成就辉煌
JAVA综合,,如何掌握JDK1.5枚举类型
Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class, 它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口。 当我们在声明一个enum类型时,我们应该注意到enum类型有如下的一些特征。
1(它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例。
2(所有枚举值都是public , static , final的。注意这一点只是针对于枚举值,我们可以和在普通类里面定义 变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的修饰符。
3(Enum默认实现了java.lang.Comparable接口。
4(Enum覆载了了toString方法,因此我们如果调用Color.Blue.toString()默认返回字符串”Blue”.
Blue”) 5(Enum提供了一个valueOf方法,这个方法和toString方法是相对应的。调用valueOf(“将返回Color.Blue.因此我们在自己重写toString方法的时候就要注意到这一点,一把来说应该相对应地重写valueOf方法。
6(Enum还提供了values方法,这个方法使你能够方便的遍历所有的枚举值。
7(Enum还有一个oridinal的方法,这个方法返回枚举值在枚举类种的顺序,这个顺序根据枚举值声明的顺序而定,这里Color.Red.ordinal()返回0。
了解了这些基本特性,我们来看看如何使用它们。
1(遍历所有有枚举值. 知道了有values方法,我们可以轻车熟路地用ForEach循环来遍历了枚举值了。
for (Color c: Color.values())
System.out.println(“find value:” + c);
2(在enum中定义方法和变量,比如我们可以为Color增加一个方法随机返回一个颜色。
public enum Color {
Red,
Green,
1 广州疯狂软件教育中心
网址:www.fkjava.org www.facejava.org
电话:,
Q Q:951170790 ,744420796,2357346943
地址:广州市天河区车陂大岗路4号沣宏大厦3011
疯狂源自梦想,技术成就辉煌
Blue;
/*
*定义一个变量
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示枚举值的数目。
*(我有点奇怪为什么sun没有给enum直接提供一个size方法).
*/
private static int number = Color.values().length ;
/**
* 随机返回一个枚举值
@return a random enum value.
*/
public static Color getRandomColor(){
long random = System.currentTimeMillis() % number;
switch ((int) random){
case 0:
return Color.Red;
case 1:
return Color.Green;
case 2:
return Color.Blue;
default : return Color.Red;
}
}
}
可以看出这在枚举类型里定义变量和方法和在普通类里面定义方法和变量没有什么区别。唯一要注意的只是变量和方法定义必须放在所有枚举值定义的后面,否则编译器会给出一个错误。
3(覆载(Override)toString, valueOf方法
前面我们已经知道enum提供了toString,valueOf等方法,很多时候我们都需要覆载默认的toString方法,那么对于enum我们怎么做呢。其实这和覆载一个普通class的toString方法没有什么区别。
„.
public String toString(){
switch (this){
case Red:
return "Color.Red";
case Green:
return "Color.Green";
2 广州疯狂软件教育中心
网址:www.fkjava.org www.facejava.org
电话:,
Q Q:951170790 ,744420796,2357346943
地址:广州市天河区车陂大岗路4号沣宏大厦3011
疯狂源自梦想,技术成就辉煌
case Blue:
return "Color.Blue";
default:
return "Unknow Color";
}
}
„.
这时我们可以看到,此时再用前面的遍历代码打印出来的是
Color.Red
Color.Green
Color.Blue
而不是
Red
Green
Blue.
可以看到toString确实是被覆载了。一般来说在覆载toString的时候我们同时也应该覆载valueOf方法,以保持它们相互的一致性。
4(使用构造函数
虽然enum不可以有public的构造函数,但是我们还是可以定义private的构造函数,在enum内部使用。还是用Color这个例子。
public enum Color {
Red("This is Red"),
Green("This is Green"),
Blue("This is Blue");
private String desc;
Color(String desc){
this.desc = desc;
}
public String getDesc(){
return this.desc;
}
3 广州疯狂软件教育中心
网址:www.fkjava.org www.facejava.org
电话:,
Q Q:951170790 ,744420796,2357346943
地址:广州市天河区车陂大岗路4号沣宏大厦3011
疯狂源自梦想,技术成就辉煌
}
这里我们为每一个颜色提供了一个说明信息, 然后定义了一个构造函数接受这个说明信息。
要注意这里构造函数不能为public或者protected, 从而保证构造函数只能在内部使用,客户代码不能new一个枚举值的实例出来。这也是完全符合情理的,因为我们知道枚举值是public static final
的常量而已。
5(实现特定的接口
我们已经知道enum可以定义变量和方法,它要实现一个接口也和普通class实现一个接口一样,这里就不作示例了。
6(定义枚举值自己的方法。
前面我们看到可以为enum定义一些方法,其实我们甚至可以为每一个枚举值定义方法。这样,我们前面覆载 toString的例子可以被改写成这样。
public enum Color {
Red {
public String toString(){
return "Color.Red";
}
},
Green {
public String toString(){
return "Color.Green";
}
},
Blue{
public String toString(){
return "Color.Blue";
}
};
}
从逻辑上来说这样比原先提供一个“全局“的toString方法要清晰一些。
总的来说,enum作为一个全新定义的类型,是希望能够帮助程序员写出的代码更加简单易懂,个人觉得一般也不需要过多的使用enum的一些高级特性,否则就和简单易懂的初衷想违背了。
4 广州疯狂软件教育中心
网址:www.fkjava.org www.facejava.org
电话:,
Q Q:951170790 ,744420796,2357346943
地址:广州市天河区车陂大岗路4号沣宏大厦3011
疯狂源自梦想,技术成就辉煌
来源:广州疯狂软件教育中心
JAVA
疯狂软件教育中心(疯狂Java)简介:
疯狂软件教育中心(疯狂Java)隶属于广州为学教育科技有限公司是一家专注于javaEE和3G/4G技术的专业培训服务机构。疯狂Java怀抱“软件强国”的理想,立志以务实的技术来改变中国的软件教育。以“十年磨一剑”的心态打造全中国最强的Java学习体系。
疯狂Java创始人李刚,疯狂Java精英讲师团队肖文吉、李韩飞、黄勇、陈辉等老师将带给广大学习者“非一般”的疯狂。
疯狂Java相继出版《疯狂Java讲义》、《疯狂Android讲义》、《轻量级Java EE企业应用实战》、《疯狂Ajax讲义》、《疯狂XML讲义》、《经典Java EE企业应用实战》、《Struts 2.1权威指南》、《Ruby On Rails敏捷开发最佳实践》、《疯狂Java突破程序员基本功的16课》、《瘋狂JAVA成為程設高手的16堂課》等著作。其中疯狂Java体系图书都是已经得到广泛的市场认同,并多次重印的畅销图书,并被多家高校选作
教材
民兵爆破地雷教材pdf初中剪纸校本课程教材衍纸校本课程教材排球校本教材中国舞蹈家协会第四版四级教材
,部分图书已被翻译成繁体中文版、输出到台湾地区。
疯狂Java体系原创图书,疯狂Java学习路线图,这些深厚的知识沉淀已被大量高校、培训机构奉为经典。
疯狂Java紧扣IT前沿技术的脉搏,高瞻远瞩立于潮头,引领行业标杆,开创IT教育培训的新天地,被称为新式IT教育的“黄埔军校”。疯狂java教育中心主要面对大学生和准大学生的长期就业培训、企业员工定制内训、在职
工程
路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理
师的短期高端培训以及企业级应用的产品研发,其专业服务和质量承诺在客户中赢得广泛的声誉。为保服务的质量,学校与华南理工大学、中山大学、暨南大学、华南师范大学等高等学府建立了师资力量方面的合作关系,同时与中国电信、中国移动、中国邮政、新华南方、汇丰银行等知名企业建立了广泛的战略合作伙伴关系。
疯狂Java结合自身特色,打破固有思维模式,以突出实战性,系统性,学识转换相结合的理念体系指引下,注重如何将培训内容真正转化为实操经验,以此促进工作能力的达成。在疯狂软件学院,学员通过参与企业实际项目开发,学以致用,获得实际项目经验。凭借自身强悍的师资、一流的课程、真实的项目、超高的就业率已经让广大学子成功走上软件工程师职业道路。大量毕业即失业的学子已通过疯狂Java实现了就业。
疯狂源自梦想,技术成就辉煌,加入疯狂Java,加入改变世界的力量,让我们一起行动,用自己的代码改变世界!
广州疯狂软件教育中心
网址:www.fkjava.org www.facejava.org
电话:,
Q Q:951170790 ,744420796,2357346943
地址:广州市天河区车陂大岗路4号沣宏大厦3011
5 广州疯狂软件教育中心
网址:www.fkjava.org www.facejava.org
电话:,
Q Q:951170790 ,744420796,2357346943
地址:广州市天河区车陂大岗路4号沣宏大厦3011