上一章,自定义了枚举类,超级麻烦。。

所以,JAVA给了一个枚举类:类 Enum<E extends Enum<E>>

  

注意事项

  •   定义枚举类要用关键字enum
  •   所有枚举类都是Enum的子类
  •   枚举类的第一行上必须是枚举项,最后一个枚举项后的分号是可以省略的,但是如果枚举类有其他的东西,这个分号就不能省略。建议不要省略
  •   枚举类可以有构造器,但必须是private的,它默认的也是private的。枚举项的用法比较特殊:枚举(“”);
  •   枚举类也可以有抽象方法,但是枚举项必须重写该方法
  •   枚举在switch语句中的使用

enum的方法:

除了下面的方法,还有一个方法在API中找不到的:

  values();  : 每个枚举类都具有这个方法,遍历枚举类的所有美剧值。

         // values()
// 此方法虽然在JDK文档中查找不到,但每个枚举类都具有该方法,它遍历枚举类的所有枚举值非常方便
Direction2[] dirs = Direction2.values();
for (Direction2 d2 : dirs) {
System.out.println(d2);
System.out.println(d2.getName());
}

方法摘要
protected  Object clone()
          抛出 CloneNotSupportedException。
 int compareTo(E o)

          比较此枚举与指定对象的顺序。
 boolean equals(Object other)

          当指定对象等于此枚举常量时,返回 true。
protected
 void
finalize()

          枚举类不能有 finalize 方法。
 Class<E> getDeclaringClass()

          返回与此枚举常量的枚举类型相对应的 Class 对象。
 int hashCode()

          返回枚举常量的哈希码。
 String name()

          返回此枚举常量的名称,在其枚举声明中对其进行声明。
 int ordinal()

          返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。
 String toString()

          返回枚举常量的名称,它包含在声明中。
static

<T extends Enum<T>>

T
valueOf(Class<T> enumType, String name)

          返回带指定名称的指定枚举类型的枚举常量。

第一版:

public enum Direction01 {
FRONT, BENIND, LEFT, RIGHT;
}

第二版:

 public enum Direction02 {

     FRONT("前"), BENIND("后"), LEFT("左"), RIGHT("右");

     private String name;

     private Direction02(String name) {
this.name = name;
} public String getname() {
return name;
}
}

第三版:

 public enum Direction03 {
FRONT("前") {
@Override
public void show() {
System.out.println("前"); }
},
BEHIND("后") {
@Override
public void show() {
System.out.println("后"); }
},
LEFT("左") {
@Override
public void show() {
System.out.println("左"); }
},
RIGHT("右") {
@Override
public void show() {
System.out.println("右"); }
}, ;
private String name; private Direction03(String name) {
this.name = name;
} public String getname(String name) {
return name;
} public abstract void show();
}

测试类:

 public class DirectionDemo {

     public static void main(String[] args) {

         // 打印第一版本
Direction01 d1 = Direction01.FRONT;
System.out.println(d1); // FRONT // 打印第二版本
Direction02 d2 = Direction02.FRONT;
System.out.println(d2); // FRONT
System.out.println(d2.getname()); // 前 // 打印第三版本 (枚举在switch语句中的使用)
Direction03 d3 = Direction03.FRONT; switch (d3) {
case FRONT:
System.out.println("选择了前");
break; case BEHIND:
System.out.println("选择了后");
break; case LEFT:
System.out.println("选择了左");
break; case RIGHT:
System.out.println("选择了右");
break; default:
break;
} } }

java 28 - 5 JDK5的新特性 之 枚举的使用的更多相关文章

  1. java 28 - 4 JDK5的新特性 之 枚举的概述和自定义枚举类

    枚举 枚举概述 是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内.举例:一周只有7天,一年只有12个月等. 回想单例设计模式:单例类是一个类只有一个实例 那么多例类就是一个类有多个实例,但 ...

  2. Java基础和JDK5.0新特性

    Java基础 JDK5.0新特性 PS: JDK:Java Development KitsJRE: Java Runtime EvironmentJRE = JVM + ClassLibary JV ...

  3. java 28 - 6 JDK7的新特性

    JDK7的新特性: 二进制字面量 数字字面量可以出现下划线 switch 语句可以用字符串 泛型简化 异常的多个catch合并 try-with-resources 语句 二进制字面量 JDK7开始, ...

  4. java 28 - 7 JDK8的新特性 之 接口可以使用方法

    JDK8的新特性: http://bbs.itcast.cn/thread-24398-1-1.html 其中之一:接口可以使用方法 interface Inter { //抽象方法 public a ...

  5. JDK5的新特性之 增强for

      package cn.itcast.day19.foreach; import java.util.ArrayList; import java.util.Collection; import j ...

  6. Java JDK5.0新特性

    JDK5.0新特性 虽然JDK已经到了1.8 但是1.5(5.0)的变化是最大的 1. 增强for循环 foreach语句 foreach简化了迭代器 作用: 对存储对象的容器进行迭代 (数组, co ...

  7. Javaweb学习笔记——(七)——————myexlipse基本使用、jdk5.0新特性及反射讲解

    1.debug调试模式: *使用这种模式,调试程序(看到程序运行停止在这一行) -显示出来行号 -双击左边,出现一个圆点,表示设置了一个断点 *使用debug as方式,运行程序 -特使是否进入到调试 ...

  8. Day07 jdk5.0新特性&Junit&反射

    day07总结 今日内容 MyEclipse安装与使用 JUnit使用 泛型 1.5新特性 自动装箱拆箱 增强for 静态导入 可变参数方法 枚举 反射 MyEclipse安装与使用(yes) 安装M ...

  9. JDK5的新特性:泛型、可变参数、静态导入

    数组可以在创建的时候就指定存放的数据类型,这样放入不同类型的时候就会发生编译错误. 而集合却可以存储多种不同类型,这样的话如果是遍历的时候在集合中装了好多不同的数据类型的时候,十分容易发生类型转换错误 ...

随机推荐

  1. ArcMap Labels 分式结构

    最近需要在ArcMap中给要素添加分式结构的标注,可用如下VBScript函数实现: Function FindLabel ( [LBH], [DBH], [XBH] ) dim head,tail, ...

  2. 转载:HBASE配置说明

    HBase 默认配置  ,原文:http://eclecl1314-163-com.iteye.com/blog/1474286 该文档是用hbase默认配置文件生成的,文件源是 hbase-defa ...

  3. 【转载】安卓APP架构

    注:本篇博文转载于 http://my.oschina.net/mengshuai/blog/541314?fromerr=z8tDxWUH 本文介绍了文章作者从事了几年android应用的开发,经历 ...

  4. 为什么relativelayout.layoutParams的width为-1

    源码里看下就知道了.. -1不代表宽度,代表MATCH_PARENT常量的值public static final int FILL_PARENT = -1; public static final ...

  5. C语言中qsort函数的应用

    qsort函数包含在<stdlib.h>的头文件里,本文中排序都是采用的从小到大排序 一.对int类型数组排序 ]; int cmp ( const void *a , const voi ...

  6. 使用mac 终端利用alias设置快捷命令

    在终端中输入快捷命令可以提高工作效率,同时可以少记很多命令 如何做: 首先在~/目录下编辑 .bash_profile这个隐藏文件,如果你想直接双击此文件打开编辑的话请在终端输入 Mac 显示隐藏文件 ...

  7. 【读书笔记】iOS网络-使用Game Kit实现设备间通信

    Apple的Game Kit框架可以实现没有网络状况下的设备与设备之间的通信,这包括没有蜂窝服务,无法访问Wi-Fi基础设施以及无法访问局域网或Internet等情况.比如在丛林深处,高速公路上或是建 ...

  8. Xcode插件

    Xcode插件-2016-03-10Xcode插件管理神器 —— Alcatraz 说明 Alcatraz是一个管理Xcode开源包的,你可以用它查找安装你想要的插件,模板以及配色方案,而你无需手动克 ...

  9. class&meta class

    http://chun.tips 当我们发送一个消息给一个NSObject对象时,这条消息会在对象的类的方法列表里查找当我们发送一个消息给一个类时,这条消息会在类的Meta Class的方法列表里查找 ...

  10. IOS 音效

    IOS 音效 音效我们也可以成为短音频通常在程序中播放时间为1~2秒. 在应用程序中起到点缀效果,提升整体用户体验 音效文件只需要加载一次 示例代码: // // ViewController.m / ...