黑马程序员—JDK1.5新特性之枚举enum
2013-09-29 14:59
435 查看
------- android培训、java培训、期待与您交流! ----------
JDK1.5之后,引入了一个新的关键字类型 enum,称为枚举类型
使用格式如下
public enum 枚举类型名称{
枚举对象1,枚举对象2,...,枚举对象n;
}
在JDK 1.5之前,JAVA可以有两种方式定义新类型:类和接口。对于大部分面向对象编程来说,这两种方法看起来似乎足够了。但是如果想要定义几个有一定范围的值,用enum比较方便也非常简单
比如在设计多例设计模式,用枚举与否的区别
普通实现范例
输出结果
星期天
使用枚举enum实现范例
输出结果
SUN
通过对比,很明显,利用枚举来实现的多例说呢及模式会更加简单明了
但实际上用enum来定义的类实际上继承了Enum类
而Enum类的定义
而枚举类在继承Enum后比较的父类方法有:
public final int ordinal():取得枚举的序号
public finally String name():取得枚举的名称
范例enum Weekday {
SUN,MON ;//定义枚举实例
}
public class EnumTest {
public static void main(String[] args){
Weekday d = Weekday.SUN ;//获取Weekday实例
for(Weekday w:Weekday.values()){//取得所有实例,用增强for输出
System.out.println("序号-" + w.ordinal() + "-名称是--->" + w.name());
}
}
}
输出结果
序号-0-名称是--->SUN
序号-1-名称是--->MON
枚举跟其他类的同样也包括了定义属性,方法,构造方法,但是构造方法必须要私有化,而且还可以定义抽象方法
范例
输出结果
序号-0-名称是--->星期天
序号-1-名称是--->星期一
序号-0-名称是--->星期天
序号-1-名称是--->星期一
序号-0-名称是--->星期天
序号-1-名称是--->星期一
------- android培训、java培训、期待与您交流! ----------
JDK1.5之后,引入了一个新的关键字类型 enum,称为枚举类型
使用格式如下
public enum 枚举类型名称{
枚举对象1,枚举对象2,...,枚举对象n;
}
在JDK 1.5之前,JAVA可以有两种方式定义新类型:类和接口。对于大部分面向对象编程来说,这两种方法看起来似乎足够了。但是如果想要定义几个有一定范围的值,用enum比较方便也非常简单
比如在设计多例设计模式,用枚举与否的区别
普通实现范例
class Weekday { private static final Weekday SUN = new Weekday("星期天") ;//创建多个实例 private static final Weekday MON = new Weekday("星期一") ; private String title ; private Weekday(String title) {//私有构造方法 this.title = title ; } public String toString() {//重写toString return this.title ; } public static Weekday getInstance(int ch) {//获取实例 switch(ch) { case 0 : return SUN ; case 1 : return MON ; default : return null ; } } } public class EnumTest { public static void main(String[] args){ Weekday d = Weekday.getInstance(0) ; System.out.println(d); } }
输出结果
星期天
使用枚举enum实现范例
enum Weekday { SUN,MON ;//定义枚举变量 } public class EnumTest { public static void main(String[] args){ Weekday d = Weekday.SUN ;//获取Weekday实例 System.out.println(d); } }
输出结果
SUN
通过对比,很明显,利用枚举来实现的多例说呢及模式会更加简单明了
但实际上用enum来定义的类实际上继承了Enum类
而Enum类的定义
public abstract class Enum<E extends Enum<E>> extends Object implements Comparable<E>, Serializable
而枚举类在继承Enum后比较的父类方法有:
public final int ordinal():取得枚举的序号
public finally String name():取得枚举的名称
范例enum Weekday {
SUN,MON ;//定义枚举实例
}
public class EnumTest {
public static void main(String[] args){
Weekday d = Weekday.SUN ;//获取Weekday实例
for(Weekday w:Weekday.values()){//取得所有实例,用增强for输出
System.out.println("序号-" + w.ordinal() + "-名称是--->" + w.name());
}
}
}
输出结果
序号-0-名称是--->SUN
序号-1-名称是--->MON
枚举跟其他类的同样也包括了定义属性,方法,构造方法,但是构造方法必须要私有化,而且还可以定义抽象方法
范例
enum Weekday { SUN("星期天"){//枚举对象实例化并实现抽象方法 public String getDay(){ return this.day; }; },MON("星期一"){ public String getDay(){ return this.day; }; } ;//定义枚举实例 String day; private Weekday(String day){ this.day = day; } public String toString(){ return this.day; //重写toString方法 } public abstract String getDay();//定义抽象方法 } public class EnumTest { public static void main(String[] args){ Weekday d = Weekday.SUN ;//获取Weekday实例 for(Weekday w:Weekday.values()){//取得所有实例,用增强for输出 System.out.println("序号-" + w.ordinal() + "-名称是--->" + w); } } }
输出结果
序号-0-名称是--->星期天
序号-1-名称是--->星期一
序号-0-名称是--->星期天
序号-1-名称是--->星期一
序号-0-名称是--->星期天
序号-1-名称是--->星期一
------- android培训、java培训、期待与您交流! ----------
相关文章推荐
- 黑马程序员-jdk1.5新特性---枚举
- 黑马程序员-----JDK1.5新特性-自动拆装箱、静态导入、枚举、可变参数、for循环增强
- 黑马程序员--Java基础加强(2)-- JDK1.5新特性之可变参数,增强for,自动拆装箱,枚举
- 黑马程序员-jdk1.5新特性--枚举的高级应用。
- 黑马程序员——高新部分——高新入门、JDK1.5新特性及枚举
- 黑马程序员—【Java高新技术】之eclipse开发工具枚举及JDK1.5新特性
- 黑马程序员——【Java高新技术】——JDK1.5新特性:静态导入、可变参数、增强型for循环、自动装箱拆箱、枚举
- 黑马程序员_JDK1.5新特性-枚举
- 黑马程序员基础加强——JDK1.5的新特性: 自动拆箱和机制 枚举
- 黑马程序员--张孝祥Java高新技术-JDK1.5新特性(二)【基本数据类型的自动拆箱与装箱,枚举】以及享元设计模式
- 黑马程序员_学习笔记:11) Jdk5.0新特性:增强for循环、可变参数(...)、静态导入、枚举:关键字 enum、自动拆装箱、泛型
- 黑马程序员——高新技术——枚举,JDK1.5部分新特性
- 黑马程序员-----jdk1.5新特性之枚举
- 黑马程序员——java编程那些事儿____jdk1.5新特性 枚举
- 黑马程序员-----程序员之路_____JDK1.5新特性之枚举
- 黑马程序员 java基础加强——jdk1.5新特性—枚举
- 张孝祥高新技术部分,jdk1.5新特性枚举的概念及应用
- 黑马程序员---Java中的JDK1.5部分特性
- 黑马程序员--基础加强(JDK1.5新特性)
- 黑马程序员---Java基础加强---JDK1.5新特性