`

JDK5.0新特性系列---3.枚举类型

 
阅读更多

/**
 *enum关键字表示枚举类型,它的作用相当于类声明中的class关键字
 *枚举类型不能有public的构造方法
 *所有的枚举值都是public、static、final的,这些修饰符都是自动加上,无须程序员手动添加
 *枚举值之间用逗号","分开,最后一个枚举值后面接分号";"
 *每一个枚举值是一个枚举类型的实例
 *可以在枚举类型中定义非枚举值变量,这些变量可以使用任何修饰符
 *变量和方法的定义必须在枚举值后面定义
*/
public class EnumType {
       /**人Person的枚举类型*/
       enum Person{
              CHINESE,    //中国人
              AMERICAN,   //美国人
              ENGLISH;    //英国人
       }
       public static void main(String[] args){
              System.out.println("Person枚举值的数目: " + Person.values().length);
              //遍历枚举类型中的所有值
              System.out.println("Person枚举值如下: ");
              Person[] ps = Person.values();   //values()方法返回Person类型的数组
              for (Person p : ps){
                     System.out.print(p + " ");   //toString()方法返回枚举值的名称,此处打印CHINESE AMERICAN ENGLISH
              }
              System.out.println();
              Person p = Person.CHINESE;
              //比较枚举值
              if(p == Person.CHINESE){
                     System.out.println("p' value equals Person.CHINESE");
              }
              //使用valueOf获得字符串描述的枚举值
              p = Person.valueOf("AMERICAN");
              //在switch中使用枚举值
              //switch中可以放置的类型有byte,short,int,char,enum,注意没有long
               switch(p){
              case CHINESE:
                     System.out.println("p is Chinese");
                     break;
              case AMERICAN:
                     System.out.println("p is American");
                     break;
              case ENGLISH:
                     System.out.println("p is English");
                     break;
              }
              //获得枚举值在枚举类型中声明的顺序
              System.out.println("AMERICAN的序号: " + Person.AMERICAN.ordinal());
              System.out.println("CHINESE的序号: " + Person.CHINESE.ordinal());
              System.out.println("ENGLISH的序号: " + Person.ENGLISH.ordinal());
             
              //使用更复杂的枚举类型ComplexPerson
              ComplexPerson cp = ComplexPerson.CHINESE;
              //因为为CHINESE枚举值覆盖了toString()方法,所以调用的是CHINESE的toString方法
              System.out.println("cp.toString(): " + cp);
              cp = ComplexPerson.AMERICAN;
              //因为没有为AMERICAN枚举值覆盖toString方法,所以调用默认的toSting方法
              cp = ComplexPerson.OTHER;
              System.out.println("cp.getValue(): " + cp.getValue());
       }
       /**一个更复杂的枚举类型*/
       enum ComplexPerson{
              //枚举值
              //CHINESE的value属性为"中国人"
              CHINESE("中国人"){
                      public String toString(){
                            return "这是个中国人";
                     }
              },
              AMERICAN("美国 人"),
              ENGLISH("英国人"){
                     public String toString(){
                            return "这是个英国佬";
                     }
              },
              OTHER{
                     public String toString(){
                            return "这是个其它国家的人";
                     }
              };
              private String value = null; //枚举类值的value属性,只能声明在枚举值的后面
              //默认的构造方法
              ComplexPerson(){
                     value = "其他人";
              }
              //带参数的构造方法
              ComplexPerson(String value){
                     this.value = value;
              }
              //获取value属性
               public String getValue(){
                     return this.value;
              }
       }
}
 
分享到:
评论

相关推荐

    JDK 5.0.zip

    1. **类型安全的枚举(Enums)**:JDK 5.0引入了枚举类型,使得枚举成为一种独立的、类型安全的类。枚举可以包含方法和常量,增加了代码的可读性和安全性,避免了传统常量类可能导致的问题。 2. **泛型(Generics)...

    JDK5.0新特性 常量 、枚举、 for each、反射

    在Java开发领域,JDK 5.0是一个重要的里程碑,引入了多项显著的新特性,极大地提升了编程效率和代码质量。本文将深入探讨其中的四个关键特性:常量、枚举、for each循环(也称为增强型for循环)以及反射。 首先,让...

    JDK5.0新特性 反射、枚举.rar

    `JDK5.0新特性(3)——枚举.doc`中应该会介绍如何声明枚举、枚举实例的创建、枚举的继承、枚举常量的方法以及枚举与switch语句的结合。枚举在设计模式、API设计以及表示固定集合的常量等方面都有重要作用。 再者,...

    JDK5.0新特性(3)——枚举

    在Java编程语言中,JDK 5.0的发布带来了一系列重要的新特性,极大地提升了开发效率和代码质量。其中,枚举(Enum)是引入的一个关键特性,它为表示固定集合中的常量提供了强大而安全的支持。这篇博客将深入探讨JDK ...

    JDK5.0 新特性

    在JDK 5.0中,Java引入了一系列重要的新特性,极大地提升了开发效率和代码的可读性。这些新特性包括自动包装和解包、增强的for循环、可变参数方法、printf风格的格式化输出、枚举类型以及静态导入等。 首先,自动...

    JDK5.0新特性

    JDK 5.0引入了枚举类型,它提供了一种更安全、更规范的方式来定义常量。枚举可以拥有方法、字段,甚至可以实现接口。 ```java public enum Color { RED, GREEN, BLUE; } ``` ### 3. **自动装箱与拆箱(Autoboxing...

    jdk5.0新特性实例讲解

    Java JDK 5.0,又称为JDK 1.5,是Java开发工具包的一个重要升级,它引入了大量的新特性和改进,极大地提升了Java编程的...而"jdk5.0新特征.txt"则可能包含了对所有新特性的详细描述和使用示例,是深入学习的好资源。

    jdk5.0新特性汇总(超级详细)

    枚举类型是 JDK 5.0 引入的一种特殊的数据类型,用来表示一组固定的常量值。 **示例代码:** ```java enum Gender { MALE, FEMALE, BOTH } public class EnumExample { public static void main(String[] args) ...

    jdk5.0新特性ppt

    之前的枚举类型存在安全隐患,但JDK 5.0引入的枚举类型提供了类型安全的枚举,使得枚举常量成为独立的类实例,可以拥有方法和字段,同时避免了传统常量类的潜在问题。 5. **静态导入(Static import)**: 静态...

    良葛格JDK5.0学习笔记

    3. **枚举类型**:JDK5.0之前,枚举通常通过常量类来实现,而JDK5.0引入了内置的枚举类型,提供了更强大的功能和更好的类型安全。枚举可以有方法、构造函数,甚至可以实现接口,例如 enum Color {RED, GREEN, BLUE}...

    appengine-java-sdk-1.5.0.1.zip_JDK1.5.0.1_appengine-java-s_appen

    同时,Java 5.0的特性使得代码更加简洁、类型安全,并提高了开发效率。然而,需要注意的是,随着Java版本的迭代,某些较旧的SDK版本可能不再支持最新的Java特性,因此在实际开发中,开发者应根据项目需求选择适合的...

    JDK5.0新特性源代码

    在这个名为“JDK5.0新特性源代码”的压缩包中,我们可以期待找到与这些关键特性相关的源代码示例。以下是JDK 5.0引入的一些核心新特性及其详细解释: 1. **泛型(Generics)**:泛型允许在类、接口和方法中声明类型...

    JDK5.0的11个主要新特征

    JDK5.0是Java开发的一个重要里程碑,它引入了11个主要的新特性,极大地提升了编程效率和代码安全性。以下是对这些特性的详细说明: 1. 泛型(Generic) 泛型的引入是为了解决类型安全问题,避免在运行时进行不必要...

    jdk 5.0 ban

    2. **枚举(Enums)**:在JDK 5.0之前,Java中通常使用常量类来模拟枚举类型,但这种方式存在一些问题。JDK 5.0引入的枚举解决了这些问题,提供了一种更安全、更强大的方式来定义和使用常量集,比如Java的java.lang....

    良葛格Java JDK 5.0学习笔记

    Java JDK 5.0是Java发展历程中的一个重要里程碑,它引入了许多新特性,极大地提升了开发效率和代码质量。这里,我们将详细探讨这个版本的关键知识点,帮助初学者更好地理解和掌握Java编程。 1. **自动类型推断(var...

    良葛格Java JDK 5.0学习笔记[可打印]

    Java JDK 5.0是Java开发的一个里程碑版本,它引入了许多重要的新特性和改进,极大地提升了开发效率和代码质量。良葛格的Java JDK 5.0学习笔记是一份宝贵的资源,适合初学者和有经验的开发者回顾这个版本的关键概念。...

    (Java 2 SDK)JDK 5.0 的源代码

    在JDK 5.0之前,Java没有内置的枚举类型,开发者通常使用常量来模拟枚举。但JDK 5.0引入了枚举,使得枚举变量成为一种正式的类型,可以拥有方法和实现接口,大大增强了枚举的功能性和可读性。 三、自动装箱与拆箱...

    jdk1.5(jdk-1_5_0_08-windows-i586-p.exe)

    JDK 1.5引入了枚举类型,使得定义常量集合更为规范,增强了类型安全并降低了错误的可能性。 3. **自动装箱与拆箱(Autoboxing and Unboxing)** 自动装箱和拆箱简化了基本类型与对应的包装类之间的转换,使得代码...

    jdk-1_5_0_22-linux-i586.rar_5.0版本_jdk_jdk-1_5_0_22_lakee6q_linux

    2. **枚举类型**:JDK 5.0添加了枚举类型,这是一种特殊的类,可以定义一组固定的实例。枚举常用于表示有限的、预定义的值集,如方向、星期等,提供了一种更安全、更清晰的替代常量的方案。 3. **自动装箱与拆箱**...

    jdk5.0 资源下载

    3. 枚举类型(Enums):JDK5.0引入了枚举类型,使得常量的定义更加规范,支持更多的面向对象操作,如比较、遍历等。 4. 可变参数(Varargs):使用省略号“...”表示可变参数,允许一个方法接受任意数量的同类型...

Global site tag (gtag.js) - Google Analytics