JDK5-枚举
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-枚举的更多相关文章
- JDK5.0新特性(静态导入、自动装箱/拆箱、增强for循环、可变参数、枚举、泛形)
JDK5中新增了很多新的java特性,利用这些新语法可以帮助开发人员编写出更加高效.清晰,安全的代码. 这些新特性主要有:1.静态导入2.自动装箱/拆箱3.增强for循环4.可变参数5.枚举6.泛型7 ...
- java 28 - 5 JDK5的新特性 之 枚举的使用
上一章,自定义了枚举类,超级麻烦.. 所以,JAVA给了一个枚举类:类 Enum<E extends Enum<E>> 注意事项 定义枚举类要用关键字enum 所有枚举类都是E ...
- java 28 - 4 JDK5的新特性 之 枚举的概述和自定义枚举类
枚举 枚举概述 是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内.举例:一周只有7天,一年只有12个月等. 回想单例设计模式:单例类是一个类只有一个实例 那么多例类就是一个类有多个实例,但 ...
- 枚举类型Enum
包java.dataStructure中,文件名Enum_demo.java 在JDK5中引入了一个新的关键字——enum,可以直接定义枚举类型 在申明枚举类的时候,也可以申明属性.方法和构造函数,但 ...
- java基础(1)-比较jdk5,jdk6,jdk7的新特性
jdk8已经出来好长时间了,这里自己学习时简单总结的jdk5,jdk6和jdk7的新特性:本文提纲: 一.jdk5的新特性 二.jdk6的新特性 三.jdk7的新特性 一.jdk5的新特性 首先简单介 ...
- java中枚举类的使用详解
/* * 通过JDK5提供的枚举来做枚举类 */ public enum Direction2 { FRONT("前"), BEHIND("后"), LEFT( ...
- Java核心 --- 枚举
Java核心 --- 枚举 枚举把显示的变量与逻辑的数字绑定在一起在编译的时候,就会发现数据不合法也起到了使程序更加易读,规范代码的作用 一.用普通类的方式实现枚举 新建一个终态类Season,把构造 ...
- Java API —— JDK5新特性
JDK5新特性 自动拆装箱.泛型.增强for.静态导入.可变参数.枚举 1.增强for概述 1)简化数组和Collection集合的遍历 2)格式: ...
- Jdk5.0中出现的新特性
掌握jdk5.0中出现的新特性1.泛型(Generics)2.增强的"for"循环(Enhanced For loop)3.自动装箱/自动拆箱(Autoboxing/unboxin ...
- [未完成]关于枚举(Enum)
今天总结一下枚举相关的知识.先附一段关于枚举的代码: package org.talend.core.model.param; import org.talend.core.i18n.Messages ...
随机推荐
- hiho一下103周 平衡树·Treap
平衡树·Treap 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho:小Hi,我发现我们以前讲过的两个数据结构特别相似. 小Hi:你说的是哪两个啊? 小Ho:就是二 ...
- 物联网操作系统 - Zephyr
What is Zephyr? Zephyr Project is a small, scalable real-time operating system for use on resource-c ...
- 简单的贴图显示shander
Shader "ztq/Diffuse" { Properties { _Color ("Main Color", Color) = ...
- JavaScript Book Plan
1. HTML5 2. Library & Framwork About Performance Tool and Process https://developers.google.com/ ...
- 基于LeanCloud云引擎的Web全栈方案
LeanEngine-Full-Stack The FULL STACK DEVELOPER 复杂的项目, 协作分工, 自动化流程,代码组织结构,框架选择,国际化方案等 Generator 或者See ...
- cf C Milking cows
题意:输入n,然后输入n个数,在n个数中0或1,0代表这头牛向左看,1代表这头牛向右看,问最后最少损失多少牛奶. 思路:贪心,连着的0可以不损失,一旦插入1就会损失牛奶. #include <c ...
- Robot Motion
Description A robot has been programmed to follow the instructions in its path. Instructions for the ...
- 几个Uboot命令
1 nand scrub 这个命令会擦除坏块信息,将坏块标识成好的,但此时这个坏块有潜在有危险,在特定条件下仍会造成数据的丢失,所以应该谨慎使用. Run U-boot and then use th ...
- Android 批量上传sd卡图片
最近手头上需要批量上传一些保存到SD卡图片由于简单,过于忘记,写在博客中吧!同时也希望能帮到大家! 一 . 以下是一个Service类 package cn.com.service; import j ...
- Inotify: 高效、实时的Linux文件系统事件监控框架
Inotify: 高效.实时的Linux文件系统事件监控框架 概要 - 为什么需要监控文件系统? 在日常工作中,人们往往需要知道在某些文件(夹)上都有那些变化,比如: 通知配置文件的改变 ...