Java分享笔记:自定义枚举类 使用enum关键字定义枚举类

  在JDK1.5之前没有enum关键字,如果想使用枚举类,程序员需要根据Java语言的规则自行设计。从JDK1.5开始,Java语言添加了enum关键字,可以通过该关键字方便地定义枚举类。这种枚举类有自己的程序编写规则,并且具有一些特殊方法。

  下面是笔者分别针对自定义枚举类enum枚举类的程序设计。

 

[1] 自定义枚举类

 1 /*-------------------------
 2 JDK1.5之前通过自行设计程序,来自定义枚举类
 3 下面以季节为例自定义枚举类
 4 --------------------------*/
 5 package pack01;
 6 
 7 public class Season {
 8     public static void main(String[] args) {
 9 
10         FourSeasons spring = FourSeasons.SPRING;
11         FourSeasons winter = FourSeasons.WINTER;
12         
13         System.out.println( spring.getName() );
14         System.out.println( spring.toString() );
15         System.out.println();
16         System.out.println( winter.getName() );
17         System.out.println( winter.toString() );
18     }
19 }
20 
21 // 定义表示季节的枚举类,共有4个内部对象
22 class FourSeasons {
23 
24     // 定义类的属性:私有的,终态的,在构造器中进行初始化
25     private final String name;
26 
27     // 将构造器私有化,使构造器不能在类的外部被使用
28     private FourSeasons(String name) {
29         this.name = name;
30     }
31 
32     // get方法返回属性值
33     public String getName() {
34         return name;
35     }
36 
37     // 覆盖toString方法,设置默认打印值
38     public String toString() {
39         return "This is " + name;
40     }
41 
42     // 在类的内部创建对象
43     public static final FourSeasons SPRING = new FourSeasons("spring");
44     public static final FourSeasons SUMMER = new FourSeasons("summer");
45     public static final FourSeasons AUTUMN = new FourSeasons("autumn");
46     public static final FourSeasons WINTER = new FourSeasons("winter");
47 }

 

[2] 使用enum关键字定义枚举类

 1 /*-------------------------
 2 JDK1.5开始可以通过enum关键字来定义枚举类
 3 使用enum关键字定义枚举类与自定义枚举类的程序编写不同之处:
 4 ....//将关键字class用关键字enum替换
 5 ....//必须在类体的一开始创建内部的对象,并遵循一定的书写规则
 6 ....//枚举类有两个常用的方法:
 7 ........//values():将枚举类中的所有对象以数组的方式返回
 8 ........//valueOf(String arg0):将类中的某一个对象的名字以字符串的形式作为参数传入,返回该对象
 9 ....//枚举类可以实现接口,覆盖接口中的抽象方法既可以写在枚举类的类体中,也可以写在对象后的花括号中
10 ........//若写在了对象后的花括号中,则该方法不再是所有对象公共的。不同对象调用同一方法时,可以得到不同的效果。
11 
12 下面以季节为例使用enum关键字定义枚举类
13 --------------------------*/
14 package pack02;
15 
16 public class Season {
17     public static void main(String[] args) {
18         
19         //测试枚举类中的values()方法
20         FourSeasons[] seasons = FourSeasons.values();
21         for( int i=0; i<seasons.length; ++i ) {
22             System.out.println( seasons[i].getName() );
23         }
24         System.out.println();
25         
26         //测试枚举类中的valueOf()方法,创建春天的对象
27         FourSeasons spring = FourSeasons.valueOf("SPRING");
28         System.out.println( "valueOf(\"SPRING\"): " + spring.getName() + '\n' );
29         
30         //创建夏,秋,冬的对象
31         FourSeasons summer = FourSeasons.SUMMER;
32         FourSeasons autumn = FourSeasons.AUTUMN;
33         FourSeasons winter = FourSeasons.WINTER;
34         spring.printWords();
35         summer.printWords();
36         autumn.printWords();
37         winter.printWords();
38         //上面调用接口中的方法打印出来的结果,春天与其他三个季节是不同的,因为SPRING对象重新覆盖了接口中的方法
39     }
40 }
41 
42 //定义一个接口,让枚举类来实现该接口
43 interface Inter{
44     void printWords();
45 }
46 
47 // 定义表示季节的枚举类,共有4个内部对象
48 enum FourSeasons implements Inter { //使用enum关键字,并实现上述接口
49 
50     //必须在类体中的一开始创建对象,对象之间用逗号分开,并且要遵循一定的书写规则
51     SPRING("spring"){
52         public void printWords() {//在创建对象时可以单独重写接口中的方法,这时类体中的重写方法对于该对象将不再起作用
53             System.out.println("This is spring");
54         }
55     },
56     SUMMER("summer"),
57     AUTUMN("autumn"),
58     WINTER("winter");
59     
60     // 定义类的属性:私有的,终态的,在构造器中进行初始化
61     private final String name;
62 
63     // 将构造器私有化,使构造器不能在类的外部被使用
64     private FourSeasons(String name) {
65         this.name = name;
66     }
67     
68     // get方法返回属性值
69     public String getName() {
70         return name;
71     }
72     
73     // 重写接口中的抽象方法
74     public void printWords() {
75         System.out.println("There are four different seasons.");
76     }
77 }

 

注:希望与各位读者相互交流,共同学习进步。

转载于:https://www.cnblogs.com/EarthPioneer/p/9378181.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/538151.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html5做咖啡网页素材,HTML5/CSS3咖啡品类切换动画

CSS语言&#xff1a;CSSSCSS确定body {background-color: #FB9F89;}.container {position: absolute;top: 30px;left: 200px;}.saucer {position: absolute;top: 50px;left: 40px;width: 200px;height: 200px;border-radius: 100%;background-color: #FFF;box-shadow: 5px 1px …

汽车和山羊问题matlab仿真_Matlab----无人机集群对抗中的关键问题和仿真平台(开发中)案例...

无人机集群对抗&#xff0c;是自动驾驶中路径规划的新问题&#xff0c;并且连续两年出现在最近的中国大学生数学建模竞赛中。可见&#xff0c;这是一个急需解决的数学问题&#xff08;体现了官方的军事战略意志&#xff09;&#xff0c;同时&#xff0c;还没有成熟解决方案的问…

使用durid的ConfigFilter对数据库密码加密

原文连接&#xff1a;http://blog.csdn.net/aixiaoyang168/article/details/49930513 ----------------------------------------------------------------------- 对于大部分程序员来说&#xff0c;数据库的信息&#xff0c;如用户名&#xff0c;密码等信息一般都写到配置文件…

序(不知道是什么时候的模拟题)

序 【问题背景】 zhx 给他的妹子们排序。 【问题描述】 \(zhx\) 有 \(N\) 个妹子&#xff0c; 他对第 \(i\) 个妹子的好感度为\(a_i\), 且所有\(a_i\),两两不相等。 现在 \(N\) 个妹子随意站成一排&#xff0c; 他要将她们根据好感度从小到大排序。 他使用的是冒泡排序算法&…

html写用户导入,用户基本信息录入.html

&#xfeff;用户基本信息录入$axure.utils.getTransparentGifPath function() { return resources/images/transparent.gif; };$axure.utils.getOtherPath function() { return resources/Other.html; };$axure.utils.getReloadPath function() { return resources/reload.…

adg oracle 架构_技术栈数据中心有了ADG架构就高枕无忧了?你还需要做这一步!...

技术栈数据中心有了ADG架构&#xff0c;就高枕无忧了&#xff1f;你还需要做这一步&#xff01;如果把数据中心建设比喻成西天取经&#xff0c;那旅途上的九九八十一难就是我们不得不躲闪、跨越、攻坚的堡垒。即日起&#xff0c;希嘉推出“技术栈”板块&#xff0c;集结数据治理…

String length must be a multiple of four.

今天在整理2013年的工作时的一个项目&#xff0c;修改了数据库连接&#xff0c;初始化数据库&#xff0c;部署运行报错&#xff0c;主要原因是阿里巴巴druid报错&#xff0c;导致DataSource初始化失败。 druid报错日志&#xff1a; Caused by: java.lang.IllegalArgumentExce…

论文笔记:Person Re-identification with Deep Similarity-Guided Graph Neural Network

Person Re-identification with Deep Similarity-Guided Graph Neural Network 2018-07-27 17:41:45 Paper&#xff1a; https://128.84.21.199/pdf/1807.09975.pdf 本文将 Graph Neural Network (GNN) 应用到 person re-ID 的任务中&#xff0c;用于 model 不同 prob-gallery …

CGLib动态代理原理及实现

原文连接&#xff1a;http://songbo-mail-126-com.iteye.com/blog/968792 ------------------------------------------------------------------------ JDK实现动态代理需要实现类通过接口定义业务方法&#xff0c;对于没有接口的类&#xff0c;如何实现动态代理呢&#xff…

微型计算机的硬件组成中ssd硬盘通常是指,2015年计算机一级msoffice选择题121道及答案...

31、通常&#xff0c;在微机中标明的P4或奔腾4是指( D )A、产品型号B、主频C、微机名称D、微处理器型号32、以平均无故障时间(MTBF)&#xff0c;用于描述计算机的( A )A、可靠性B、可维护性C、性能价格比D、以上答案都不对33、以平均修复时间(MTTR)&#xff0c;用于描述计算机的…

双曲函数奇偶性_基本初等函数之奇偶性(强基系列42)

基本初等函数之奇偶性(强基系列4-2)开卷有益初等函数是由幂函数(power function)、指数函数(exponential function)、对数函数(logarithmic function)、三角函数(trigonometric function)、反三角函数(inverse trigonometric function)与常数经过有限次的有理运算(加、减、乘、…

Caused by: Parent package is not defined: json-default - [unknown location]

原文连接&#xff1a;http://blog.csdn.net/bebested/article/details/52627890 ------------------------------------------------------------------------------------------- Unable to load configuration. - [unknown location] at com.opensymphony.xwork2.config.Co…

【window】git安装教程

相关链接&#xff1a;https://blog.csdn.net/nly19900820/article/details/73379854 作者&#xff1a;smile.轉角 QQ&#xff1a;493177502转载于:https://www.cnblogs.com/websmile/p/9384060.html

html文件打开系统错误,win7打开word提示“无法打开文件Normal因为内容有错误”的两种解决方法...

win7系统打开Word的时候&#xff0c;弹出提示“无法打开文件Normal.dotm,因为内容有错误”&#xff0c;为什么会出现错误提示呢&#xff1f;小编就按照错误提示寻找文件&#xff0c;最后发现是Word自动生成的模板Normal出错了&#xff0c;知道故障原因后&#xff0c;接下去教程…

超链接跳转到action使用哪个方法_管道疏通剂哪个牌子好 管道疏通机使用方法有哪些...

平时大家不用的水或者一些物品&#xff0c;在处理的时候应该都会倒到下水道之中&#xff0c;而下水道确实具备着这一种效果&#xff0c;但很多时候&#xff0c;下水道往往会因为口比较小&#xff0c;而被一些物品所堵塞&#xff0c;这样一来&#xff0c;影响上其实会非常大&…

linux学习-将seafile启动脚本设置为开机启动服务

有时候&#xff0c;我们安装的linux软件和程序不是通过yum安装&#xff0c;而是通过编译或者其他方式安装。有时需要将程序设置为服务&#xff0c;达到开机启动的目的。我在公有云的与服务器上搭建了seafile网盘&#xff0c;当我重启云服务器的时候&#xff0c;seafile的程序不…

物理借助传感器用计算机测速度,用打点计时器测速度教案_物理_教学设计_人教版...

第四节、实验&#xff1a;用打点计时器测速度西安中学&#xff1a;张卫岗邮编&#xff1a;710021【教材版本】人民教育出版社【设计理念】实验是物理学习的基础&#xff0c;通过自主探究、问题研究&#xff0c;结合速度概念的科学认识&#xff0c;体验科学研究与生活实际的联系…

Failed to load or instantiate TagLibraryValidator class: org.apache.taglibs.standard.tlv.JstlFmtTLV

原因&#xff1a; 1、缺包。如缺 standard-1.1.2.jar servlet-api-2.4.jar jstl-1.1.2.jar 2、包重复。最可能是 servlet-api-2.4.jar jsp-api-2.0.jar 与Tomcat lib 下的冲突。删掉 web-inf/lib下的

中文整合包_案例 | 美研市场营销和整合营销专业1620Fall 580+申请实例(含MS+PHD)...

关注“留学壹周刊”&#xff0c;回复专业名称&#xff0c;如“金融”&#xff0c;可以自由查询相关资料介绍本篇微信主要包括如下内容&#xff1a;580美研市场营销和整合营销专业16-20Fall申请实例&#xff0c;包括6个文件&#xff1a;1、MS项目申请实例2、PHD项目申请实例3、成…

关于HttpClient上传中文乱码的解决办法

使用过HttpClient的人都知道可以通过addTextBody方法来添加要上传的文本信息&#xff0c;但是&#xff0c;如果要上传中文的话&#xff0c;或还有中文名称的文件会出现乱码的问题&#xff0c;解决办法其实很简单&#xff1a; 第一步&#xff1a;设置MultipartEntityBuilder的编…