java 28 - 5 JDK5的新特性 之 枚举的使用

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

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

  

注意事项

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

enum的方法:

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

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

1         // values()
2         // 此方法虽然在JDK文档中查找不到,但每个枚举类都具有该方法,它遍历枚举类的所有枚举值非常方便
3         Direction2[] dirs = Direction2.values();
4         for (Direction2 d2 : dirs) {
5             System.out.println(d2);
6             System.out.println(d2.getName());
7         }
方法摘要
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;
}

第二版:

 1 public enum Direction02 {
 2
 3     FRONT("前"), BENIND("后"), LEFT("左"), RIGHT("右");
 4
 5     private String name;
 6
 7     private Direction02(String name) {
 8         this.name = name;
 9     }
10
11     public String getname() {
12         return name;
13     }
14 }

第三版:

 1 public enum Direction03 {
 2     FRONT("前") {
 3         @Override
 4         public void show() {
 5             System.out.println("前");
 6
 7         }
 8     },
 9     BEHIND("后") {
10         @Override
11         public void show() {
12             System.out.println("后");
13
14         }
15     },
16     LEFT("左") {
17         @Override
18         public void show() {
19             System.out.println("左");
20
21         }
22     },
23     RIGHT("右") {
24         @Override
25         public void show() {
26             System.out.println("右");
27
28         }
29     }, ;
30     private String name;
31
32     private Direction03(String name) {
33         this.name = name;
34     }
35
36     public String getname(String name) {
37         return name;
38     }
39
40     public abstract void show();
41 }

测试类:

 1 public class DirectionDemo {
 2
 3     public static void main(String[] args) {
 4
 5         // 打印第一版本
 6         Direction01 d1 = Direction01.FRONT;
 7         System.out.println(d1); // FRONT
 8
 9         // 打印第二版本
10         Direction02 d2 = Direction02.FRONT;
11         System.out.println(d2); // FRONT
12         System.out.println(d2.getname()); // 前
13
14         // 打印第三版本 (枚举在switch语句中的使用)
15         Direction03 d3 = Direction03.FRONT;
16
17         switch (d3) {
18         case FRONT:
19             System.out.println("选择了前");
20             break;
21
22         case BEHIND:
23             System.out.println("选择了后");
24             break;
25
26         case LEFT:
27             System.out.println("选择了左");
28             break;
29
30         case RIGHT:
31             System.out.println("选择了右");
32             break;
33
34         default:
35             break;
36         }
37
38     }
39
40 }
时间: 2024-10-19 09:36:29

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

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

枚举 枚举概述 是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内.举例:一周只有7天,一年只有12个月等. 回想单例设计模式:单例类是一个类只有一个实例 那么多例类就是一个类有多个实例,但不是无限个数的实例,而是有限个数的实例.这才能是枚举类. 自定义枚举类. 第一版:无参构造 1 public class Direction { 2 // 创建几个实例 3 public static final Direction FRONT = new Direction(); 4 public

JDK5的新特性之 增强for

  package cn.itcast.day19.foreach; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.ListIterator; /* * JDK5的新特性:自动拆装箱,泛型,可变参数,增强for,静态导入,枚举 * * 增强for:是for循环的一种 * * 格式: * for(元素数据类型 变量:数组或者Collection集合){

Java JDK5.0新特性

JDK5.0新特性 虽然JDK已经到了1.8 但是1.5(5.0)的变化是最大的 1. 增强for循环 foreach语句 foreach简化了迭代器 作用: 对存储对象的容器进行迭代 (数组, collection, map) 1> 格式 增强for循环括号里写两个参数 第一个是声明一个变量 第二个就是需要迭代的容器 for( 元素类型 变量名 : Collection集合 & 数组 ) { ... } 2> 增强for循环和传统for循环的区别 a. 增强for循环在使用时 必须要

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

day07总结 今日内容 MyEclipse安装与使用 JUnit使用 泛型 1.5新特性 自动装箱拆箱 增强for 静态导入 可变参数方法 枚举 反射 MyEclipse安装与使用(yes) 安装MyEclipse 先安装了JDK ? MyEclipse介绍 ? MyEclipse是Eclipse的一个插件: MyEclipse是需要花钱的: MyEclipse官网不在欢迎中国人登录: ? MyEclipse使用 ? 1 创建项目 选择工作空间: 工作空间路径不能有空格和中文: 工作空间以班名

day07 MyEclipse 安装 jdk5.0 新特性

1.myeclipse的安装和使用 * eclipse:是一个免费的开发工具    * myeclipse:是一个收费的插件,破解myeclipse,        ** 安装目录的要求: 不能有中文和空格        ** 安装完成之后,选择一个工作空间 ,这个工作空间不能有中文和空格    * 破解myeclipse        ** 运行run.bat文件,但是运行之前,必须要安装jdk,通过配置环境变量 * myeclipse的使用        * 创建一个工程          

Java 8的八个新特性

Java 8的八个新特性 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs 1.接口的默认方法和静态方法 Java 8在接口方面引入了新特性. Java 8版之前,接口只有抽象方法,而在Java 8,为接口新增了两种类型的方法. 第一种是默认方法.此方法使用了default关键字修饰方法名.实际上接口不包含任何实现的方法,而在Java 8中,可以通过使用default关键字来添加默认的方法实现. 接口的实现类可以直接使

黑马程序员——【Java高新技术】——JDK1.5新特性:静态导入、可变参数、增强型for循环、自动装箱拆箱、枚举

一.静态导入 1.import和import static区别: (1)import 是导入一个类或某个包中所有的类. (2)import static是导入一个类中的某个静态方法或所有的静态方法. 注:在调用静态导入的类的静态方法时,可以不用再写类名.如Arrays.sort(int[])可以直接写sort(int[]); 2.静态导入的写法: (1)import static java.util.Arrays.*;   表示导入Arrays类中的所有静态成员. (2)import stati

JDK5.0新特性

JDK5中新增了很多新的java特性,利用这些新语法可以帮助开发人员编写出更加高效.清晰,安全的代码. 这些新特性主要有:1.静态导入2.自动装箱/拆箱3.增强for循环4.可变参数5.枚举6.泛型7.元数据 1.静态导入静态导入用于简化程序对静态属性和方法的调用 语法:Import static 包名.类名.静态属性|静态方法|*例如: import static java.lang.System.out import static java.lang.Math.* 2.自动装箱/拆箱自动装箱

java 1.7 1.8新特性

在JDK1.7的新特性方面主要有下面几方面的增强:1.jdk7语法上1.1二进制变量的表示,支持将整数类型用二进制来表示,用0b开头.1.2 Switch语句支持string类型1.3 Try-with-resource语句 注意:实现java.lang.AutoCloseable接口的资源都可以放到try中,跟final里面的关闭资源类似: 按照声明逆序关闭资源 ;Try块抛出的异常通过Throwable.getSuppressed获取1.4 Catch多个异常 说明:Catch异常类型为fi