JDK5-枚举

时间:2022-09-06 09:52:49

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基础&lpar;1&rpar;-比较jdk5&comma;jdk6&comma;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&period;0中出现的新特性

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

  10. &lbrack;未完成&rsqb;关于枚举&lpar;Enum&rpar;

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

随机推荐

  1. POJ 2499 Binary Tree

    题意:二叉树的根节点为(1,1),对每个结点(a,b)其左结点为 (a + b, b) ,其右结点为 (a, a + b),已知某结点坐标,求根节点到该节点向左和向右走的次数. 分析:往回一步一步走肯 ...

  2. cocos2d-实现读取&period;plist文件(使用数组CCArray)

    学习札记之cocos2d-x2.1.1实现读取.plist文件(使用数组CCArray) <?xml version="1.0" encoding="UTF-8&q ...

  3. APP测试相关点归纳

    APP测试相关点归纳   1.1测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为一两周,根据项目情况以及版本质量可适当缩短或延长测试时间.正式测试前需确认项目排期. 1.2测试资源 ...

  4. 无法从带有索引像素格式的图像创建graphics对象

    大家在用 .NET 做图片水印功能的时候, 很可能会遇到 “无法从带有索引像素格式的图像创建graphics对象”这个错误,对应的英文错误提示是“A Graphics object cannot be ...

  5. 海洋cms v6&period;53 v6&period;54版本漏洞复现

    海洋cms v6.53 v6.54版本漏洞复现 参考链接: 今天发现freebuf上一篇海洋cms的漏洞,来复现一下. http://www.freebuf.com/vuls/150042.html ...

  6. javascript中Date对象的应用

    前面的话 简易日历作为javascript中Date对象的常见应用,用途较广泛.本文将详细说明简易日历的实现思路 效果演示 HTML说明 使用type=number的两个input分别作为年和月的输入 ...

  7. Httpclient远程调用WebService示例(Eclipse&plus;httpclient)

    package cn.com.taiji.pos.httpserver; import java.io.BufferedInputStream;import java.io.ByteArrayOutp ...

  8. Entity Framework &quot&semi;There is already an open DataReader associated with this 的解决办法

    解决办法: 1,修改连接串,加上MultipleActiveResultSets=true 2, 一次性先把数据读出来 var contacts = from c in db.Contact sele ...

  9. React native 开发工具 VSCode

    1.VSCODE下载地址:先下载VSCode软件 2.代码提示功能: 打开 VSCode ,然后 按住键盘 command+p,然后在vscode上面输入框 输入: "ext install ...

  10. ffmpeg代码实现自定义encoder

    1.概述 本文主要讲述如何用ffmpeg代码实现自己的encoder. 2.代码 /* *本程序主要实现一个自己的encoder并加入到encoder链中去,供api调用 *作者:缪国凯(MK) *8 ...