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

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

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

[1] 自定义枚举类

1 1 /*------------------------- 2 2 JDK1.5之前通过自行设计程序,来自定义枚举类 3 3 下面以季节为例自定义枚举类 4 4 --------------------------*/ 5 5 package pack01; 6 6 7 7 public class Season { 8 8 public static void main(String[] args) { 9 9 1010 FourSeasons spring = FourSeasons.SPRING; 1111 FourSeasons winter = FourSeasons.WINTER; 1212 1313 System.out.println( spring.getName() ); 1414 System.out.println( spring.toString() ); 1515 System.out.println(); 1616 System.out.println( winter.getName() ); 1717 System.out.println( winter.toString() ); 1818 } 1919 } 2020 2121 // 定义表示季节的枚举类,共有4个内部对象 2222 class FourSeasons { 2323 2424 // 定义类的属性:私有的,终态的,在构造器中进行初始化 2525 private final String name; 2626 2727 // 将构造器私有化,使构造器不能在类的外部被使用 2828 private FourSeasons(String name) { 2929 this.name = name; 3030 } 3131 3232 // get方法返回属性值 3333 public String getName() { 3434 return name; 3535 } 3636 3737 // 覆盖toString方法,设置默认打印值 3838 public String toString() { 3939 return "This is " + name; 4040 } 4141 4242 // 在类的内部创建对象 4343 public static final FourSeasons SPRING = new FourSeasons("spring"); 4444 public static final FourSeasons SUMMER = new FourSeasons("summer"); 4545 public static final FourSeasons AUTUMN = new FourSeasons("autumn"); 4646 public static final FourSeasons WINTER = new FourSeasons("winter"); 4747 }

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

1 1 /*------------------------- 2 2 JDK1.5开始可以通过enum关键字来定义枚举类 3 3 使用enum关键字定义枚举类与自定义枚举类的程序编写不同之处: 4 4 ....//将关键字class用关键字enum替换 5 5 ....//必须在类体的一开始创建内部的对象,并遵循一定的书写规则 6 6 ....//枚举类有两个常用的方法: 7 7 ........//values():将枚举类中的所有对象以数组的方式返回 8 8 ........//valueOf(String arg0):将类中的某一个对象的名字以字符串的形式作为参数传入,返回该对象 9 9 ....//枚举类可以实现接口,覆盖接口中的抽象方法既可以写在枚举类的类体中,也可以写在对象后的花括号中 1010 ........//若写在了对象后的花括号中,则该方法不再是所有对象公共的。不同对象调用同一方法时,可以得到不同的效果。 1111 1212 下面以季节为例使用enum关键字定义枚举类 1313 --------------------------*/ 1414 package pack02; 1515 1616 public class Season { 1717 public static void main(String[] args) { 1818 1919 //测试枚举类中的values()方法 2020 FourSeasons[] seasons = FourSeasons.values(); 2121 for( int i=0; i<seasons.length; ++i ) { 2222 System.out.println( seasons[i].getName() ); 2323 } 2424 System.out.println(); 2525 2626 //测试枚举类中的valueOf()方法,创建春天的对象 2727 FourSeasons spring = FourSeasons.valueOf("SPRING"); 2828 System.out.println( "valueOf(\"SPRING\"): " + spring.getName() + '\n' ); 2929 3030 //创建夏,秋,冬的对象 3131 FourSeasons summer = FourSeasons.SUMMER; 3232 FourSeasons autumn = FourSeasons.AUTUMN; 3333 FourSeasons winter = FourSeasons.WINTER; 3434 spring.printWords(); 3535 summer.printWords(); 3636 autumn.printWords(); 3737 winter.printWords(); 3838 //上面调用接口中的方法打印出来的结果,春天与其他三个季节是不同的,因为SPRING对象重新覆盖了接口中的方法 3939 } 4040 } 4141 4242 //定义一个接口,让枚举类来实现该接口 4343 interface Inter{ 4444 void printWords(); 4545 } 4646 4747 // 定义表示季节的枚举类,共有4个内部对象 4848 enum FourSeasons implements Inter { //使用enum关键字,并实现上述接口 4949 5050 //必须在类体中的一开始创建对象,对象之间用逗号分开,并且要遵循一定的书写规则 5151 SPRING("spring"){ 5252 public void printWords() {//在创建对象时可以单独重写接口中的方法,这时类体中的重写方法对于该对象将不再起作用 5353 System.out.println("This is spring"); 5454 } 5555 }, 5656 SUMMER("summer"), 5757 AUTUMN("autumn"), 5858 WINTER("winter"); 5959 6060 // 定义类的属性:私有的,终态的,在构造器中进行初始化 6161 private final String name; 6262 6363 // 将构造器私有化,使构造器不能在类的外部被使用 6464 private FourSeasons(String name) { 6565 this.name = name; 6666 } 6767 6868 // get方法返回属性值 6969 public String getName() { 7070 return name; 7171 } 7272 7373 // 重写接口中的抽象方法 7474 public void printWords() { 7575 System.out.println("There are four different seasons."); 7676 } 7777 }

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

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java枚举类型enum的使用

java枚举类型enum的使用最近跟同事讨论问题的时候,突然同事提到我们为什么java中定义的常量值不采用enmu枚举类型,而采用publicfinalstatic 类型来定义呢?以前我们都是采用这种方式定义的,很少采用enum定义,所以也都没有注意过,面对突入起来的问题,还真有点不太清楚为什么有这样的定义。既然不明白就抽

java枚举类型

java枚举类型enum枚举类型是java5新增特性的一部分,是一种特殊的数据类型(既是一种类类型但是又比类类型多些特殊的约束)枚举定义的方式:publicenumDay{MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY}定义

java枚举

https://www.cnblogs.com/hyl8218/p/5088287.html摘抄并自查语法(定义)创建枚举类型要使用enum关键字,隐含了所创建的类型都是java.lang.Enum类的子类。枚举类符合通用模式ClassEnum<EextendsEnum<E,而E表示枚举类型的名称。枚举类型的每一

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