`

简单使用枚举类

阅读更多

 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) ;
    }

分享到:
评论

相关推荐

    枚举 HashMap

    在Java中,枚举类可以定义一组常量,每个常量可以有自己的方法和属性。如果我们想模仿这个特性,可以在HashMap中存储键值对,键是代表枚举值的字符串或者自定义对象,值是包含方法和属性的对象实例。 2. **动态...

    用enum实现单例模式的方法来读取配置文件

    在Java编程中,单例模式是一种常用的创建型设计模式,它保证了类只有一个实例,并提供一个全局访问点。单例模式常用于管理共享资源,如配置文件的读取。...不过,对于简单的配置管理,枚举单例模式已经足够实用。

    枚举 USB HUB 设备

    无论是简单的单层枚举还是复杂的多层枚举,都需要操作系统精确地识别和处理每一个设备,以确保系统的正常运行和用户能够顺利地使用外设。在实际开发中,理解这一过程对于编写驱动程序或应用程序来说至关重要。

    ActionScript3.0 枚举类型的使用

    2. **成员常量**:枚举类中的成员通常是`public static const`类型的变量,这些变量用来表示不同的枚举值。 3. **类型**:成员常量的类型可以是任何原始类型(如`int`, `String`等)。 下面是一个具体的例子,展示...

    java枚举的一个例子

    ### Java枚举详解 在Java编程语言中,枚举(`enum`)是一种特殊的类,用于定义一组固定的常量值。这些常量值通常代表了一组预定义的选项或者...枚举是Java中一个非常实用的功能,合理地利用它可以显著提升代码的质量。

    枚举操作类

    在实际开发中,枚举操作类往往还会有其他实用功能,如枚举的过滤、筛选、分组等。这样的辅助类能够提高代码的复用性,降低枚举操作的复杂度,同时使得枚举的管理和使用更加规范和灵活。 例如,一个简单的`...

    枚举量的索引问题

    首先,C++中的枚举类型分为两种:标准枚举(enum)和枚举类(enum class)。标准枚举默认从0开始自动分配整数值,而枚举类提供更强的类型安全,但不自动分配值,需要手动指定。在处理枚举量的索引问题时,我们通常会...

    C# 颜色枚举对照表

    5. **EnumColors.cs**:这个文件可能是一个源代码文件,包含了使用 C# 编写的与颜色枚举相关的类或方法。它可能包括了枚举颜色并展示它们的示例代码。 6. **EnumColors.exe**:这是一个可执行文件,可能是编译后的...

    C语言枚举的简单应用

    通过这个简单的示例,我们可以看到枚举类型在C语言中的灵活性和实用性。它不仅可以简化代码,提高可读性,还可以帮助我们有效地处理特定的问题。希望这篇文章能够帮助读者更好地理解和掌握C语言中枚举类型的使用方法...

    对enum简单的封装

    - 通过抽象枚举类,可以定义一些共有的方法或属性,供子类枚举实例共享。 5. **枚举与工具类的结合**: - 枚举工具类:有时,我们可能会创建一个工具类来处理与枚举相关的通用任务,比如验证枚举值的合法性,或者...

    委托、枚举、泛型

    枚举在实际编程中非常实用,特别是在定义一组预定义的状态或选项时,如颜色、星期等,它们提供了类型安全,防止了错误的值被赋给枚举变量。 【泛型】 泛型是C#中一种强大的功能,允许我们创建可重用的类型,这些...

    C# 枚举PC设备的源代码

    接下来,我们可能会编写一个类来枚举(enumerate)PC上的设备。这通常涉及到Windows API调用,如使用`ManagementObjectSearcher`类从WMI(Windows Management Instrumentation)获取设备信息。以下是一个简单的示例...

    2022年掌握JDK1.5枚举类型Java教程.docx

    1. 构造函数:枚举类无法拥有公共构造函数,这意味着外部代码无法直接创建新的枚举实例,确保了枚举的唯一性。 2. 枚举常量属性:枚举类型的每个实例(枚举常量)都是public、static、final的,这意味着它们可以在...

    数学广场列表枚举实用教案.pptx

    在小学数学教学中,列表枚举法是一种非常实用的数学策略,尤其适用于解决涉及数量关系的问题。这种策略的核心在于列举所有可能的情况,通过这种方式来解决问题。对于小学生来说,这是一种很直观的学习方法,可以帮助...

    asp.net 分类枚举指定计算机的服务

    总之,掌握在ASP.NET中使用C#枚举和管理服务的能力,对于开发者来说是非常实用的技能,尤其是在构建监控、管理系统或者自动化工具时。通过深入学习这个示例,你可以更好地理解如何与Windows服务进行交互,并将其应用...

    易语言枚举文件夹并分层次显示

    在易语言中,"枚举文件夹并分层次显示"是常见的文件操作任务,尤其在构建文件管理器或者需要遍历目录结构的场景中非常实用。这个功能允许程序逐个检查指定文件夹下的所有子文件夹和文件,并以树形结构进行展示,方便...

    1.理解枚举算法 2.利用枚举算法实现简单问题编程求解

    枚举算法是一种基础而实用的计算机算法,广泛应用于解决各种计算问题。它的基本思想是对所有可能的解进行尝试,直到找到正确答案或者确认无解为止。这种算法在处理有限且可枚举的解空间时尤为有效,比如在解决排列...

    易语言枚举进程所有句柄源码

    同时,这也体现了易语言的灵活性和实用性,即使面对复杂的系统级操作,也能通过简单的语法实现。 在实际应用中,枚举进程句柄的功能可能被用于调试、监控或其他需要深入系统层次的应用。例如,安全软件可能会使用...

    小学二年级下册数学奥数知识讲解第十课(枚举法).pdf

    在小学二年级的奥数课程中,枚举法是一个基础但非常实用的技巧,帮助孩子们通过尝试所有可能的情况来找到正确答案。本节我们将深入探讨枚举法及其在小学奥数中的应用。 首先,我们要理解什么是枚举法。枚举法,...

Global site tag (gtag.js) - Google Analytics