1. 使用普通类模拟枚举

 public class Weekday {
private Weekday() {} // 私有化 public static final Weekday MONDAY = new Weekday();  // 每个枚举都是一个对象
public static final Weekday TUESDAY = new Weekday(); public String toString() {
if(this == MONDAY)
return "Monday";
else if(...) ...
}
}

2. 使用抽象类模拟枚举

 public abstract class Weekday {
private Weekday() {} public final static Weekday MONDAY = new Weekday() {
public Weekday nextDay() {
return TUESDAY;
}
}; public final static Weekday TUESDAY = new Weekday() {
public Weekday nextDay() {
return WEDNESDAY;
}
}; ... public abstract Weekday nextDay();
}

使用抽象类模拟可以免除写大量的if-else语句,不需要对每个对象进行判断,只需要有具体实现类完成即可

3. 枚举类

 public enum Weekday {
SUN, MON, TUE, WED, THU, FRI, SAT
}

普通的枚举类末尾不需要写分号

4. 带构造参数枚举

 public enum Weekday {
SUN(5), MON(), TUE(7), WED(), THU(9), FRI, SAT; // 必须第一行,且以分号结尾 private Weekday() {}
private Weekday(int number) {
System.out.println(number);
}
}

枚举中每个变量都是static final的

5. 带抽象函数的枚举

 public enum Weekday {    // enum不用abstract修饰
SUN(5) {
public Weekday nextDay() {
return MON;
}
},
MON() {
public Weekday nextDay() {
return TUE;
}
},
TUE() {
public Weekday nextDay() {
return WED;
}
},
WED() {
public Weekday nextDay() {
return THU;
}
},
THU() {
public Weekday nextDay() {
return FRI;
}
},
FRI() {
public Weekday nextDay() {
return SAT;
}
},
SAT() {
public Weekday nextDay() {
return SUN;
}
}; private Weekday() {}
private Weekday(int number) {
System.out.println(number);
} public abstract Weekday nextDay();
}

6. 枚举类中的方法

  toString()  - String

  name()  - String

  ordinal()  - int

  valueOf(String name)  - Weekday

  values()  - Weekday[]

JDK5-枚举的更多相关文章

  1. JDK5.0新特性(静态导入、自动装箱/拆箱、增强for循环、可变参数、枚举、泛形)

    JDK5中新增了很多新的java特性,利用这些新语法可以帮助开发人员编写出更加高效.清晰,安全的代码. 这些新特性主要有:1.静态导入2.自动装箱/拆箱3.增强for循环4.可变参数5.枚举6.泛型7 ...

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

    上一章,自定义了枚举类,超级麻烦.. 所以,JAVA给了一个枚举类:类 Enum<E extends Enum<E>> 注意事项 定义枚举类要用关键字enum 所有枚举类都是E ...

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

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

  4. 枚举类型Enum

    包java.dataStructure中,文件名Enum_demo.java 在JDK5中引入了一个新的关键字——enum,可以直接定义枚举类型 在申明枚举类的时候,也可以申明属性.方法和构造函数,但 ...

  5. java基础(1)-比较jdk5,jdk6,jdk7的新特性

    jdk8已经出来好长时间了,这里自己学习时简单总结的jdk5,jdk6和jdk7的新特性:本文提纲: 一.jdk5的新特性 二.jdk6的新特性 三.jdk7的新特性 一.jdk5的新特性 首先简单介 ...

  6. java中枚举类的使用详解

    /* * 通过JDK5提供的枚举来做枚举类 */ public enum Direction2 { FRONT("前"), BEHIND("后"), LEFT( ...

  7. Java核心 --- 枚举

    Java核心 --- 枚举 枚举把显示的变量与逻辑的数字绑定在一起在编译的时候,就会发现数据不合法也起到了使程序更加易读,规范代码的作用 一.用普通类的方式实现枚举 新建一个终态类Season,把构造 ...

  8. Java API —— JDK5新特性

    JDK5新特性         自动拆装箱.泛型.增强for.静态导入.可变参数.枚举   1.增强for概述         1)简化数组和Collection集合的遍历         2)格式: ...

  9. Jdk5.0中出现的新特性

    掌握jdk5.0中出现的新特性1.泛型(Generics)2.增强的"for"循环(Enhanced For loop)3.自动装箱/自动拆箱(Autoboxing/unboxin ...

  10. [未完成]关于枚举(Enum)

    今天总结一下枚举相关的知识.先附一段关于枚举的代码: package org.talend.core.model.param; import org.talend.core.i18n.Messages ...

随机推荐

  1. Java认证:JavaRunnable线程编写接口代码

    Java认证:JavaRunnable线程编写接口代码.JavaRunnable线程如何才能更好的适应目前的编程环境呢?下面我们就看看如何才能更好的进行相关环境.希望下面的文章对大家有所帮助.Java ...

  2. __block存储类型

    __block存储类型 你可以指定引入一个变量为可更改的,即读-写的,通过应用__block 存储类型修饰符.局部变量的__block 的存储和 register.auto.static 等存储类型相 ...

  3. NET Core 静态文件及JS包管理器(npm, Bower)的使用

    NET Core 静态文件及JS包管理器(npm, Bower)的使用 文章目录 在 ASP.NET Core 中添加静态文件 使用npm管理JavaScript包 使用Bower管理JavaScri ...

  4. 10条PHP高级技巧

    1.使用一个SQL注射备忘单 一个基本的原则就是,永远不要相信用户提交的数据. 另一个规则就是,在你发送或者存储数据时对它进行转义(escape). 可以总结为:filter input, escap ...

  5. 排他锁Lock

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. Laravel框架——增删改查

    增: //save返回true false $res = new member(); res->username = 'a'; $res->password = 'b'; dd($res- ...

  7. HYPER-V2008里安装WINDOWS 2012,以及监控宝

    呵呵,这两者有关系么?没关系.哈哈. 为了方便就放一起了. 至少,2008里的HYPERV能安装2012,倒是给我很多欣慰.

  8. c#:类 相关练习;

    1. 2. int i = a.Length;//获取字符串的长度   a = a.ToLower();//将字符串中的大写英文字符转化为小写   a = a.ToUpper();//将字符串中的小写 ...

  9. MFC中对话框的工具栏的使用

    1.新建一个MFC项目:在资源视图中新建Toolbar资源: 2.编辑状态栏: 3.在***Dlg.h文件中添加CToolBar类型或其派生类型的一个变量如:(CdlgToolBar myToolBa ...

  10. Unique Binary Search Trees——LeetCode

    Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For examp ...