高新技术知识——枚举

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

26,高新技术——jdk 1.5新特性枚举

26.1 定义枚举类型

格式:权限修饰符 enum 枚举类名{

枚举对象1,枚举对象2,……;
}

枚举的作用:用于限定对象的取值范围。

enum 关键字用于声明一个枚举类型,实际上就是定义了一个继承Enum类的类。

如:

 

public enum Week {

   MON,TUE,WED,THU,FRI,SAT,SUN;//枚举类中的元素,相当于一个个枚举类的对象。

}

 

枚举类型的特点:

1,  枚举类的构造函数是private权限的。

2,  枚举类可以实现接口或内部定义抽象方法,但不能继承其他类。因为,枚举类型默认继承Enum类。

3,  如果定义了抽象方法,那么枚举类中的对象要覆盖这些方法。

 

 

26.2 枚举类的静态方法

enum 关键字定义的枚举类默认继承Enum类,就拿到了Enum类中的所有方法。

 

valueOf(String str);

将字符串枚举常量名,转成枚举对象实体。

values();

返回一个包含所有枚举常量的数组。

如:

package Default;

public class MyEnum{

   public static void main(String[] args)throws ClassNotFoundException {

      Week [] weeks=Week.values();//获取一个包含所有枚举常量的数组.

      for(Week week:weeks){//遍历这个数组。

         System.out.println(week);

      }

      Week mon=Week.valueOf("MON");//把任意字符串枚举常量转成枚举对象.

       System.out.println(mon);

   }

}
enum Week{//定义一个枚举类

   MON,TUE,WED,THU,FRI,SAT,SUN;

}


26.3 枚举类的常用非静态方法

toString();

返回此枚举常量的名称。

 

String name();

返回此枚举常量的名称

 

int ordinal();

返回此枚举常量的序数,从0开始。

 

如:

package Default;

public class MyEnum{

   public static void main(String[] args)throws ClassNotFoundException {

      Week [] weeks=Week.values();

      for(Week week:weeks){

         System.out.println(week.name());//返回枚举常量的字符串名称.

         System.out.println(week.ordinal());//返回枚举常量的序数.

         System.out.println(week.toString());//返回枚举常量的字符串名称.

      }

   }

}

enum Week{

   MON,TUE,WED,THU,FRI,SAT,SUN;

}

 


26.4 枚举类中可以定义构造函数、抽象方法、实现其他接口。

注意:枚举类中的构造函数默认是private权限的。枚举类中的构造函数不能是:publicprotected

      枚举类中定义了抽象方法,每个枚举常量都要覆盖抽象方法。

         枚举类如果实现了某些接口,每个枚举常量都要覆盖接口中的方法或者只由枚举类覆盖接口中的方法。

 

如:

package Default;

public lass MyEnum {

   public static void main(String[] args)throws ClassNotFoundException {

      Week [] weeks=Week.values();

      for(Week week:weeks){

         System.out.println(week.getWeek());

      }

 

   }

}

 

enum Week implements Inter {//创建枚举对象,并实现接口

   MON() {

      @Override

      public String getWeek() {//分别覆盖接口中的抽象方法.

         return"星期一";

      }

   },

   TUE() {

      @Override

      public String getWeek() {

         return"星期二";

      }

   },

   WED() {

      @Override

      public String getWeek() {

         return"星期三";

      }

   },

   THU() {

      @Override

      public String getWeek() {

         return"星期四";

      }

   },

   FRI() {

      @Override

      public String getWeek() {

         return"星期五";

      }

   },

   SAT() {

      @Override

      public String getWeek() {

         return"星期六";

      }

 

   },

   SUN() {

      @Override

      public String getWeek() {

         return"星期日";

      }

 

   };

   private String value;

   private Week() {//枚举类中定义构造函数.

   }
}

interface Inter {//创建一个接口.

   String getWeek();

}

26.5       使用枚举实现单例设计模式.

枚举实现单例设计模式会相对比较方便,只需要在枚举类中定义一个常量,就可以完成单例设计模式.省去了私有化构造函数和对外提供获取实体的公共方法的步骤.

如:

package Default;

public class MyEnum {

   public static void main(String[] args)throws ClassNotFoundException {

      SingleInstance s1=SingleInstance.SINGLE;

      SingleInstance s2=SingleInstance.SINGLE;

      SingleInstance s3=SingleInstance.SINGLE;

      System.out.println(s1==s2);

      System.out.println(s1==s3);

   }

}

enum SingleInstance{

   SINGLE;//只要定义一个枚举常量.

}

/*

 打印结果:

true

true*/

 

 

由此可见,使用枚举可以轻松实现单例设计模式.

总结:Java中除了类和接口外,还可以定义枚举类型.当需要限定对象的取值范围时,就可以使用枚举.

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值