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 ...
随机推荐
- 原生Ajax + Promise
有原生写的ajax + promise嫁接下 ;(function(root){ var LD = function(obj){ if( obj instanceof LD ) return obj; ...
- ubuntu 安装 open in teminal
sudo apt-get install nautilus-open-terminalnautilus -q
- Insert Interval 面试题leetcode.
刚开始做这个题的时候绕了好大的圈,对问题的分析不全面,没能考虑所有情况,做的很纠结.后来看了下大神的做法很受启发,改了改代码,最终提交了. public static ArrayList<Int ...
- asp.net mvc 强类型视图中传入List 数据到控制器
问题来源: 在和一位技术老师聊天时,老师问我一个mvc 表单提交的问题,问道:怎样在表单提交的时候,将 带有 List 属性的对象传入控制器? 这时,我有点呆了,以前一直都好像是 单一属性的表单提交, ...
- net programming guid
Beej's Guide to Network Programming Using Internet Sockets Brian "Beej Jorgensen" Hallbeej ...
- 零零碎碎搞了一天最后发现是ruby版本问题
查来查去查不到问题,后来在stackoverflow看到: http://stackoverflow.com/questions/22352838/ruby-gem-install-json-fail ...
- 辉哥用的这种方法实现ZABBIX的MYSQL批量监控
不错的.集中和分布式,总是一对要解决的问题.应该可以再想更好的策略~~ 一.方案需求及思路 因跑MySQL服务的服务器比较多,并且每台服务器可能会运行多个不同端口的数据库,如果单独手动一台一台去修改a ...
- linux 发布 qt(更新ld命令的路径依赖)
PATH 错误解决error while loading shared libraries: libXXX.so.X: cannot open shared object file: No such ...
- 使用SSH代理上IPV6(使用SSH端口转发)
这几个月在国外待着,一直担心我的六维账户怎么办,那可是个宝贝啊.我看网上说可以用六飞啊神马的在IPV6下上IPV6的网站,但是冒失现在六维封禁了非学校的IPV6地址,所以这些软件就不顶用了. 想到以前 ...
- Sublime Text 3 配置
配置: { "font_face": "Source Code Pro", , "highlight_line": true, " ...