`

简单使用枚举类

阅读更多

 1,什么是枚举类?

  枚举是一种特殊形式的java类
  枚举类中声明的每一个枚举值代表美剧尅的一个势力对象 。
  枚举类的构造函数必须私有
  枚举类也可以实现接口或者继承抽象类
  switch语句可以接受枚举类型
  若枚举类只有一个枚举值,则可以当做单态设计模式使用
  用单态设计模式定义出了一个类
  //例如,下面就是单态设计模式,只有一个实例对象

enum A{  //class
    A ;  //Object
  }

 

2.枚举类怎么实现?

  /**
 * 一些程序在运行时它需要的数据不能是任意的,
 * 而必须是一定范围内的值。
 */
class Grade{
 private Grade(){}  ;
 public static final Grade A = new Grade() ;
 public static final Grade B = new Grade() ;
 public static final Grade C = new Grade() ;
 public static final Grade D = new Grade() ;
 public static final Grade E = new Grade() ;
 }

我们可以用枚举类代替上面的类

enum Grade{

 A,B,C,D,E;

}

3.一个枚举类可以有构造函数,字段和方法

 例如,我们在Grade枚举类上扩展

 enum Grade{     //class
 A("100-90"),B("89-80"),C("79-70"),D("69-60"),E("59-0") ;   //Object
 
 private String value ; //封装每一个对象对应的分数
 private Grade(String value)
 {
  this.value = value ;
 }
 public String getValue()
 {
  return this.value ;
 }
}

然后再测试方法中:

 @Test
 public void test(){
  print(Grade.A) ;
 }
 
 public void print(Grade g) //A,B,C,D,E
 {
  String value = g.getValue() ;
  System.out.print(value) ;
 }

就可以得到分数值了

4.枚举类中的抽象方法

enum Grade{ // class
 A("100-90") {
  public String localeValue() {
   return "优";
  }
 },
 B("89-80") {
  public String localeValue() {
   return "良";
  }

 },
 C("79-70") {
  public String localeValue() {
   return "一般";
  }

 },
 D("69-60") {
  public String localeValue() {
   return "及格";
  }

 },
 E("59-0") { // Object
  public String localeValue() {
   return "不及格";
  }
 };

 private String value; // 封装每一个对象对应的分数

 private Grade(String value) {
  this.value = value;
 }

 public String getValue() {
  return this.value;
 }

 public abstract String localeValue();//定义抽象方法
}

因为Grade中有抽象方法,所以实例化对象的时候要重写该方法

5.枚举类所含有的方法

因为枚举类是Object的子类,所以有些方法和Object相同

 String name()
          返回此枚举常量的名称,在其枚举声明中对其进行声明。
 int ordinal()
          返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。
static
<T extends Enum<T>>
T
valueOf(Class<T> enumType, String name)
          返回带指定名称的指定枚举类型的枚举常量。

 

这三个方法是枚举类的常用方法:

 @Test
    public void test()
    {
     System.out.println(Grade.C.name()) ;
     System.out.println(Grade.C.ordinal()) ;
     String str = "B" ;
     Grade f = Grade.valueOf(Grade.class, str) ;
     Grade g = Grade.valueOf(str) ;
     Grade gs[] = Grade.values() ; //得到所有对象,用一个对象数组保存
     for(Grade g1: gs){
      System.out.println(g1) ;
     }
     System.out.println(f) ;
     System.out.println(g) ;
    }

分享到:
评论

相关推荐

    枚举学习源代码

    对枚举的简单实用,进行了演示,在博客中有相关文档进行了枚举详细的讲解

    VC硬件设备的枚举

    通过Windows API枚举电脑中存在的设备,要到需要的设备进行通信。虽然简单,但是实用。

    laravel-enum:更方便地在项目中定义并使用枚举

    laravel-enum 一个简单好用的枚举扩展包,帮助你更方便地管理项目中的枚举,支持 Laravel 和 Lumen。社区讨论:介绍laravel-enum 主要用来扩展项目中的常量使用,通过合理的定义常量可以使代码更加规范,更易阅读和...

    c#遍历枚举(ENUM)类型的方法

    c#遍历枚举(ENUM)类型的方法,简单实用,适合c#初学者

    Python中模拟enum枚举类型的5种方法分享

    以下几种方法来模拟enum:(感觉方法一简单实用) 复制代码 代码如下: # way1 class Directions:  up = 0  down = 1  left = 2  right =3   print Directions.down # way2 dirUp, dirDown, dirLeft, dirRight =...

    java程序设计实用教程课件

    共分16章:第1章 初识Java,第2章 初识对象和简单,第3章运算符、表达式和语句,第4章类与对象,第5章子类与继承,第6章,第7章 数组与枚举,第8章 内部类与异常,第9章 常用实用类,第10章 输入、输出流等

    枚举系统中所有硬件设备

    虽然简单,但是实用 HDEVINFO hDevInfo; SP_DEVINFO_DATA DeviceInfoData; DWORD i,j; int ret=0; hDevInfo = SetupDiGetClassDevs((LPGUID) &GUID;_DEVCLASS_MOUSE, 0, 0,DIGCF_PRESENT);//DIGCF_PROFILE);// ...

    C#公共类通用类非常齐全

    枚举操作公共类(EnumHelper.cs) 身份证操作辅助类(IDCardHelper.cs) 检测字符编码的类(IdentifyEncoding.cs) RGB颜色操作辅助类(MyColors.cs) 日期操作类(MyDateTime.cs) 转换人民币大小金额辅助类(RMBUtil.cs...

    C#公共通用类

    枚举操作公共类(EnumHelper.cs) 身份证操作辅助类(IDCardHelper.cs) 检测字符编码的类(IdentifyEncoding.cs) RGB颜色操作辅助类(MyColors.cs) 日期操作类(MyDateTime.cs) 转换人民币大小金额辅助类(RMBUtil.cs...

    全球最快的C#/。NET枚举实用程序-.NET开发

    所提供的方法全部实现了零分配,并且设计简单易用。FastEnum FastEnum是C#/。NET最快的枚举实用工具。 它比.NET Core快得多,也比类似库的Enums.NET快。 提供的方法都实现了零分配,并且设计得像System.Enum一样...

    VC++枚举当前进程的一个小示例

    内容索引:VC/C++源码,系统相关,枚举,进程 VC++枚举当前进程的一个小示例,类似代码 已有很多,不过感觉这个挺简单,而且效果不错,比较实用,枚举效果如上图示。

    枚举进程(ASM实现)

    Win ASM32实现的进程遍历,结束等。简单实用。

    aspnet公共类cs文件.rar

    (SpecialDirectories.cs)简单的Word操作对象(WordCombineUtil.cs)这个类提供了一些实用的方法来转换XML和对XmlConvertor.cs)XML操作类(XmlHelper.cs) ----------Format-------------- 参数验证的通用验证程序。...

    simple-py-backdoor:一个简单的客户端-服务器后门实用程序,用于在目标计算机上运行命令以枚举系统信息

    一个简单的客户端-服务器后门实用程序,用于在目标计算机上运行命令以枚举系统信息。 这将不断发展以接受更多的命令/功能。 用法 服务器: usage: server.py [-h] --address ADDRESS --port PORT optional ...

    DotNet公用类(超多附文档)

    6.枚举操作公共类(EnumHelper.cs) 7.身份证操作辅助类(IDCardHelper.cs) 8.检测字符编码的类(IdentifyEncoding.cs) 9.RGB颜色操作辅助类(MyColors.cs) 10.日期操作类(MyDateTime.cs) 11.转换人民币大小金额...

    C#公共类源代码 带帮助文档

    枚举操作公共类(EnumHelper.cs) 身份证操作辅助类(IDCardHelper.cs) 检测字符编码的类(IdentifyEncoding.cs) RGB颜色操作辅助类(MyColors.cs) 日期操作类(MyDateTime.cs) 转换人民币大小金额辅助类...

    WHC.OrderWater.Commons 伍华聪 公共类源码 类库 帮助文档

    枚举操作公共类(EnumHelper.cs) 身份证操作辅助类(IDCardHelper.cs) 检测字符编码的类(IdentifyEncoding.cs) RGB颜色操作辅助类(MyColors.cs) 日期操作类(MyDateTime.cs) 转换人民币大小金额辅助类...

    WHC.OrderWater.Commons公共类源码_文档[最新整理]

    枚举操作公共类(EnumHelper.cs) 身份证操作辅助类(IDCardHelper.cs) 检测字符编码的类(IdentifyEncoding.cs) RGB颜色操作辅助类(MyColors.cs) 日期操作类(MyDateTime.cs) 转换人民币大小金额辅助类...

    jetblack-java-utils:一个简单的轻量级 Linq 样式枚举器库,具有针对 Java SE 1.7 开发的流畅 API

    Enumerable 类是接口的包装器,提供典型的枚举操作。 该库的意图是微不足道、显而易见、简单和轻量级。 这是一个使用从 Top Trumps series 1 “Super Cars” 套牌派生的数据集的简短示例。 该集合被过滤以去除最高...

    c# 公用操作类库源码

    枚举操作公共类(EnumHelper.cs) 身份证操作辅助类(IDCardHelper.cs) 检测字符编码的类(IdentifyEncoding.cs) RGB颜色操作辅助类(MyColors.cs) 日期操作类(MyDateTime.cs) 转换人民币大小金额辅助类...

Global site tag (gtag.js) - Google Analytics