`
xuehongliang
  • 浏览: 94016 次
  • 性别: Icon_minigender_1
  • 来自: 辽宁
社区版块
存档分类
最新评论

JDK5.0新特性的学习--枚举

    博客分类:
  • java
阅读更多

(1)简单的例子

  JDK5.0的枚举,正好可以解决上面我们讨论的问题,而且更简洁。还是用上面的代码做示例,只需要将Color类修改如下,Flower、Client都无法更改。

 
java 代码
  1. public enum Color {    RED, BLACK, YELLOW, BLUE, WHITE, ORANGE}  
接下来我们做更深一步的说明: 
  • 所有枚举类都是java.lang.Enum的子类(JDK内核自动将Color隐性继承自Enum)
  • RED...ORANGE都是Color的实例对象
 上面的Color枚举类,功能好象还和以前的例子不完全一样,我们再次修改如下。
java 代码
  1. public enum Color {       
  2.       RED(0), BLACK(1), YELLOW(2), BLUE(3), WHITE(4), ORANGE(5);          
  3.       int color;       
  4.       Color(int color){           
  5.           this.color=color;       
  6.       }           
  7.       public int getColorValue(){           
  8.            return color;       
  9.       }   
  10. }  
从这里我们可以看到枚举类是如何创建构造函数及方法的,有一些隐性的东西要说明一下: 
  • 枚举类的构造函数要求是private的,如果象例子里那样不加修饰符,则Java会自动给加上。但如果你想加上public则会报错。
  • RED(0), BLACK(1)...等枚举值必须定义在前面,而且最后一个枚举值ORANGE(5);未尾用分号结束。

(2)在循环中使用枚举类

  枚举类都有一个values方法可以得到它值的数组:Color[] colors=Color.values();而且枚举类都支持泛型

(以后的文章会重点说到),所以我们可以这样来遍历这个数组:

 

Color[] colors = Color.values();
    for (Color c : colors) {
       System.out.println("color value=" + c.getColorValue());
    }

(3)在switch(分支)中使用枚举

  如下代码示例,这里要注意将“case RED:”写成“case Color.RED:”是会报错的,因为JDK5.0可以自动根据

“switch (color)”就判断入你要使用什么枚举类型了。从这里也可以看出JDK5.0确实为用户做了帖心的考虑,尽量让程序员少写代码,写更简单的代码。

 

Color color = Color.RED;
        switch (color) {
        case RED:
            //process ...
            break;
        case BLACK:
            //process ...
            break;
        case WHITE:
            //process ...
            break;
        default:
            //process ...
        }

(4)JDK5.0新增的集合:EnumMap 和EnumSet

  给出两个例子,一切尽在不言中了。(说明:这两个例子用到了JDK5.0中泛型的知识)

 

  Map map = new EnumMap(Color.class);
        map.put(Color.RED, "红色");
        map.put(Color.BLACK, "黑色");
        map.put(Color.WHITE, "白色");
       
        for (Color c : Color.values()) {
            System.out.println(c + " chinese is: " + map.get(c));
        }

Set all = EnumSet.allOf(Color.class);
        EnumSet warmColors = EnumSet.of(Color.RED, Color.YELLOW);
        Set notWarmColors = EnumSet.complementOf(warmColors);
        Set notBlack = EnumSet.range(Color.RED, Color.YELLOW);

分享到:
评论

相关推荐

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

    jdk1.5以上版本中新增加的特性描述,带有代码例子让你很清晰的明白jdk的 常量 、枚举、 for each、反射等各种新的特性,相信需要的你,一定满足。

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

    NULL 博文链接:https://newjueqi.iteye.com/blog/400855

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

    jdk1.5以上版本中新增加的特性描述,带有代码例子让你很清晰的明白jdk的 常量 、枚举、 for each、反射等各种新的特性,相信需要的你,一定满足。

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

    加强for循环,静态导入,枚举,泛型,反射,注解,类加载器,代理等。张孝祥总结,绝对经典。

    JDK5.0新特性 自动包装和解包等新功能

    自动包装和解包 更优化的循环语句 参数可变的方法 printf 枚举 静态引用 泛型

    Java JDK 5.0学习笔记(第二部分)

    本书是作者良葛格本人近几年来学习Java的心得笔记,结构按照作者的学习脉络依次展开,从什么是Java、如何配置Java开发环境、基本的Java语法到程序流程控制、管理类文件、异常处理、枚举类型、泛型、J2SE中标准的API...

    良葛格Java JDK 5.0学习笔记

    本书是作者良葛格本人近几年来学习Java的心得笔记,结构按照作者的学习脉络依次展开,从什么是Java、如何配置Java开发环境、基本的Java语法到程序流程控制、管理类文件、异常处理、枚举类型、泛型、J2SE中标准的API...

    JDK5一些新特性关于枚举泛型等

    JDK5.0的新特性一、枚举类型generic-泛型自动解包装与自动包装的功能

    Java JDK 5.0学习笔记(第一部分)

    本书是作者良葛格本人近几年来学习Java的心得笔记,结构按照作者的学习脉络依次展开,从什么是Java、如何配置Java开发环境、基本的Java语法到程序流程控制、管理类文件、异常处理、枚举类型、泛型、J2SE中标准的API...

    JDK5.0的11个主要新特征.doc

    6 枚举类(Enumeration Classes) 7 元数据(Meta data) 8 Building Strings(StringBuilder类) 9 控制台输入(Console Input) 10 Covariant Return Types(不晓得怎么翻译,大概是 改变返回类型) 11 格式化I/O(Formatted ...

    枚举类型的说明 enum

    详细说明了枚举类型,枚举类型是JDK5.0的新特征。Sun引进了一个全新的关键字enum来定义一个枚举类。

    Java枚举类的使用与注解

    方式二:jdk5.0之后,可以使用enum关键字定义枚举类 三、Enum类的主要方法: 四、使用enum关键字定义的枚举类实现接口的情况 栗子一:实现接口,在enum类中实现抽象方法。 栗子二:让枚举类的 对象分别实现接口中...

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

    著作:《java jdk 5.0学习笔记》、《java se 6技术手册》、《spring技术手册》等 译作:《ajax实战手册》、《jquery实战手册(第2版)》 个人网站:http://openhome.cc 目录 《java jdk 7学习笔记》 chapter1 ...

    JAVA--达内培训笔记

    JAVA_HOME = /opt/jdk1.5.06 JDK 安装路径 --- JDK = JRE {JVM(硬件)+编译器(软件)} +编译器工具+类库 PATH = $Path:$Java_Home/bin:. ClassPath = . 类路径 7、包 --- 分类放置,减少命名空间 包名.类名 ...

    java注解元数据

    定义:注解(Annotation),也叫元数据。...它是JDK5.0及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。

    Java JDK实例宝典

    全部代码出自电子工业出版社夏先波的《Java JDK实例宝典》一书,本书以J2SE 5.0为开发环境,选取Java应用的典型实例,循序渐进地介绍了Java语言的各种开发方法和技巧,实例代码注释详细规范,思路清晰。 第1章 ...

    java jdk实列宝典 光盘源代码

    16 j2se5.0 新特性 自动装箱和拆箱; 新的for循环; 枚举类型; 静态导入; 格式化输出; 使用ProcessBuilder执行本地命令; 泛型编程; 监控和管理虚拟机;新的线程执行架构; 线程锁; 线程条件; 线程同步装置:semaphore ...

    java注解详解,十分有用。

    Java 注解(Annotation)是 JDK 5.0 及以后版本引入的一个特性,它是一个新的类型,与类、接口、枚举是在同一个层次。注解可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明、注释...

    java注解详解[文].pdf

    Java 注解(Annotation)是 JDK 5.0 及以后版本引入的一个特性。它是一个新的类型,与接口类似,位于同一个层次,称为 Java 的一个类型(TYPE)。注解可以声明在包、类、字段、方法、局部变量、方法参数等的前面,...

Global site tag (gtag.js) - Google Analytics