`

学习Enum转

    博客分类:
  • JAVA
 
阅读更多
1. 关于 Java Enum:
    学过 C/C++ 等语言的人,应该都对 Enum 类型略知一二。 Enum 一般用来表示一组相同类型的常量。如性别、日期、月份、颜色等。 对这些属性用常量的好处是显而易见的,不仅可以保证单例,且比较时候可以用 ”==” 来替换 equals , 是一种好的习惯。 JDK1.5 之前没有 Enum 这个类型,那时候一般用接口常量来替代。有了 JavaEnum 之后, 可以更贴近的表示这种常量。
2. 如何使用 Java Enum
简单的用法: JavaEnum 简单的用法一般用于代表一组常用常量,可用来代表一类相同类型的常量值。如:
性别:
public enum SexEnum {
   male , female ;
}

颜色:
public enum Color {
   RED , BLUE,GREEN,BLACK ;
}

枚举对象里面的值都必须是唯一的。可以通过 Enum 类型名直接引用该常量,如 SexEnum.male,Color.RED.
复杂用法: Java 为枚举类型提供了一些内置的方法,同时枚举常量还可以有自己的方法。可以很方便的遍历枚举对象,看个下面的例子:

1. 代码一
WeekDay.java :
/**
 * @author yubing.linyb
 * 2009.7.29
 * 定义一个枚举类型,代表星期一到星期日的7个缩写常量
 * 同时还定义了枚举类型的属性day,该属性可以是final,也可是变量
 * 同时还定义了该枚举类型的一个方法printDay
 */
public enum WeekDay {
 Mon("Monday"), Tue("Tuesday"), Wed("Wednesday"), Thu("Thursday"), 
 Fri("Friday"), Sat("Saturday"), Sun("Sunday");
 /**定义枚举类型自己的属性**/
 private final String day;
 
 private WeekDay(String day) {
     this.day = day;
 }
 /**定义枚举类型自己的方法**/
 public static void printDay(int i){
     switch(i){
      case 1: System.out.println(WeekDay.Mon); break;
      case 2: System.out.println(WeekDay.Tue);break;
      case 3: System.out.println(WeekDay.Wed);break;
      case 4: System.out.println(WeekDay.Thu);break;
      case 5: System.out.println(WeekDay.Fri);break;
      case 6: System.out.println(WeekDay.Sat);break;
      case 7: System.out.println(WeekDay.Sun);break;
      default:System.out.println("wrong number!");
     }
 }
 
 public String getDay() {
     return day;
 }
}

2.代码二
WeekDayTest.java:
/**
 * @author yubing.linyb
 * 2009.7.29
 * 测试枚举类型WeekDay.
 */
public class WeekDayTest {
  public static void main(String args[]) {
      for (WeekDay day : WeekDay.values()) {
         System.out.println(day + "====>" + day.getDay());
      }
      WeekDay.printDay(5);
  }
}
输出结果为:
Mon====>Monday
Tue====>Tuesday
Wed====>Wednesday
Thu====>Thursday
Fri====>Friday
Sat====>Saturday
Sun====>Sunday
Fri

3.Java Enum 原理
Java Enum类型的语法结构尽管和 java 类的语法不一样,应该说差别比较大。但是经过编译器编译之后产生的是一个class文件。
该class文件经过反编译可以看到实际上是生成了一个类,该类继承了java.lang.Enum.
WeekDay (javap WeekDay 命令之后得到的内容如下 ( 去掉了汇编代码 ) :
public final class WeekDay extends java.lang.Enum{
    public static final WeekDay Mon;
    public static final WeekDay Tue;
    public static final WeekDay Wed;
    public static final WeekDay Thu;
    public static final WeekDay Fri;
    public static final WeekDay Sat;
    public static final WeekDay Sun;
    static {};
    public static void printDay(int);
    public java.lang.String getDay();
    public static WeekDay[] values();
    public static WeekDay valueOf(java.lang.String);
}
分享到:
评论

相关推荐

    Laravel开发-laravel-enum

    解压后,你可以查看源代码了解其具体实现方式,学习如何在自己的项目中应用和扩展这个库。通常,`tests`目录下的单元测试能帮助理解枚举类的用法和预期行为。 总之,`laravel-enum`是一个强大的工具,它将枚举概念...

    TestEnum.zip_DEMO_enum学习

    在这个"TestEnum.zip_DEMO_enum学习"中,我们可以深入探讨C#中的枚举用法和相关知识点。 首先,枚举在C#中是用`enum`关键字定义的。它允许我们为整型值创建一个可读性更强的命名空间。例如: ```csharp enum Color...

    EnumConvertDemo.zip

    在"EnumConvertDemo.zip"的示例代码中,你将找到这些转换方法的实现,这对于新手学习如何在实际项目中使用枚举转换非常有用。通过实践这些示例,你可以更好地理解C#中的枚举操作,提高编程能力。

    javaenum学习.pdf

    以下是对`javaenum学习.pdf`中提到的Java枚举相关知识点的详细说明: 1. **枚举元素定义**: - 枚举元素的列表必须写在枚举类的开头,元素之间用逗号分隔。如果元素列表后面没有其他内容,可以不加分号;如果有...

    Java中的Enum的使用与分析

    通过本文的学习,我们了解了Java中枚举类型的基本概念、特点以及如何使用。枚举类型不仅提供了更清晰的代码可读性和可维护性,还确保了类型的安全性。在实际开发中,合理利用枚举类型能够有效提升代码质量和程序的...

    DNS-ENUM.rar_ENUM/DNS_dns _enum 域名解析

    实现一个DNS域名解析服务器,通常是为了学习、测试或创建自定义的DNS解决方案。一个简单的DNS服务器可能包括解析查询、缓存响应和转发请求等功能。通过这样的实现,用户可以更好地理解DNS工作原理,并可能定制自己...

    C++枚举类型enum与enum class的使用

    C++枚举类型enum与enum class的使用 以下是C++枚举类型enum与enum class...C++枚举类型enum与enum class的使用是非常重要的知识点,它们之间的区别和使用方法都需要我们认真学习和掌握,以便更好地应用于实际开发中。

    JAVA高级编程中Enum枚举

    本资源包提供了一些关于`Enum`枚举的深入学习材料,包括实例、常见问题以及相关的文档,非常适合Java开发者进行高级编程的学习和复习。 首先,枚举的基本语法是定义一个公共类,前面加上关键字`enum`。例如: ```...

    PyPI 官网下载 | aenum-2.0.6-py2-none-any.whl

    《PyPI上的Python库"aenum"详解》 在Python编程中,PyPI(Python Package Index)是官方的软件仓库,提供了海量的第三方模块...无论你是Python的新手还是经验丰富的开发者,"aenum"都是值得尝试和学习的一个优秀工具。

    7enum枚举字函数程序案例VC共4页.pdf.zip

    通过深入学习这份案例,开发者可以提升在枚举使用上的技巧,增强代码的可维护性和规范性,同时也能更好地理解和运用C++的面向对象特性。在阅读和实践案例时,建议结合具体代码分析枚举的用法,理解7enum的设计思想,...

    Java中的Enum枚举用法.doc

    ### Java中的Enum枚举用法详解 #### 一、引言 在Java编程语言中,枚举(Enum)是一种特殊的数据类型,它被用来表示一组固定的常量集合。相比于使用常量接口或字符串来表示固定集合,枚举提供了更加安全且易于管理的...

    Struct And Enums结构和枚举

    本实践项目是基于VS2005进行的,它提供了关于如何使用Struct和Enums的实例,帮助学习者加深理解。 **结构(Struct)** 结构是一种值类型,它的数据存储在栈中,这意味着它不具有引用类型的特性,如引用传递和默认的...

    JAVA个人学习笔记

    switch语句是JAVA中的一个选择结构,类型可以是int, short, byte, char, enum这五个类型,enum必须是JDK5.0。 JAVA学习笔记涵盖了JAVA的基础知识和面向对象编程思想,帮助学习者更好地理解和使用JAVA语言。

    使用GSON库转换Java对象为JSON对象的进阶实例详解

    本文所介绍的进阶实例,主要涵盖了在使用GSON库时如何处理一些复杂情况,例如注册TypeAdapter以及处理枚举类型Enum的问题。TypeAdapter是GSON中的一个高级特性,允许用户自定义对象和JSON数据之间的转换过程,而枚举...

    Gson 枚举类型的统一序列化/反序列化处理

    在Java编程中,枚举类型(Enum)是一种强大的工具,用于定义一组预定义的常量。...通过学习和理解这些示例,你可以更好地理解和应用这种自定义枚举处理策略,使得Gson在处理枚举时更加灵活和适应性强。

    C语言学习PPTC语言学习PPTC语言学习PPTC语言学习

    9. 枚举类型(enum): 枚举允许我们创建一组命名的整型常量,方便代码的可读性。 10. 数组和结构体: 数组是一系列相同类型元素的集合,而结构体则可以封装多种不同类型的成员,实现数据的复合。 总的来说,...

    vc.zip_c++类型转换_数据类型转换

    在C++编程语言中,类型转换是至关重要的概念,它允许程序员在不同数据类型之间进行操作。本资源“vc.zip”包含了一份关于C++类型...通过学习这份资料,开发者能更好地理解和应用C++的类型转换机制,从而提升编程能力。

    计算机容量转换小例子

    4. 为了提高代码的可读性和可扩展性,可以使用枚举(Enum)来定义不同的单位类型,如`BYTE`, `KB`, `MB`, `GB`等。 5. 类还可以包含一个`convert`方法,接受原始容量、单位类型和目标单位类型作为参数,自动完成...

    一周学会C# java程序员转.NET必看

    【一周学会C#——java程序员转.NET必看】 C#是一种由微软开发的面向对象的编程语言,设计用于.NET Framework上。...通过这个一周学习计划,你将能够快速过渡,并有效地利用C#的强大功能进行.NET开发。

    FSM自动机,实现状态转换

    **FSM自动机详解:实现状态转换** 有限状态机(Finite State Machine,FSM)是计算机科学中的一个重要概念,广泛应用于计算机科学、电子工程、...通过深入学习FSM,我们可以更好地设计和实现具有清晰行为模式的系统。

Global site tag (gtag.js) - Google Analytics