JDK 1.5 新特性学习笔记(3)
2011-06-18 20:31
543 查看
4. Enum
4.1 枚举的特征
枚举是类的一种
枚举扩展自java.lang.Enum
枚举中每一个声明的值是枚举类型的一个实例
枚举没有公共的构造方法
枚举中的值都是public static final的
枚举中的值可以用==或equals()方法判等
枚举实现了java.lang.Comparable接口,可以通过compareTo()方法进行比较
枚举覆写了toString()方法,返回枚举中值的名称
枚举提供了valueOf()方法返回枚举的值(注:valueOf()方法与toString()方法对应,如果改变了toString()方法,请同时修改valueOf()方法)
枚举定义了一个final的实例方法ordinal(),返回值在枚举中的整数坐标,以0开始(注:一般由其他辅助设施使用,不直接在代码中使用)
枚举定义了values()方法,返回枚举中定义的所有值(一般在遍历时使用)
4.2 枚举的组成
枚举类型的基本组成元素包括:
enum关键字
名称
允许使用的值的列表
除上述基本元素,枚举类型还可以:
实现接口
定义变量
定义方法
与值对应的类的定义体
4.3 代码示例
4.3.1 创建枚举类型
这是枚举类型的最基本的创建方式,也是最常用的方式。
4.3.2 内联方式(inline)创建
枚举还可以通过内联方式创建:
注意static关键字是默认的,不需显式声明。
4.3.3 定义变量和方法
枚举的值定义在最上方,最后一个值的定义由";"结束。
构造器必须为private,由编译器自动添加,不需显式声明。
4.3.4 与值对应的类的定义体
枚举可实现接口,并可以在每个值上提供特定的实现。
4.1 枚举的特征
枚举是类的一种
枚举扩展自java.lang.Enum
枚举中每一个声明的值是枚举类型的一个实例
枚举没有公共的构造方法
枚举中的值都是public static final的
枚举中的值可以用==或equals()方法判等
枚举实现了java.lang.Comparable接口,可以通过compareTo()方法进行比较
枚举覆写了toString()方法,返回枚举中值的名称
枚举提供了valueOf()方法返回枚举的值(注:valueOf()方法与toString()方法对应,如果改变了toString()方法,请同时修改valueOf()方法)
枚举定义了一个final的实例方法ordinal(),返回值在枚举中的整数坐标,以0开始(注:一般由其他辅助设施使用,不直接在代码中使用)
枚举定义了values()方法,返回枚举中定义的所有值(一般在遍历时使用)
4.2 枚举的组成
枚举类型的基本组成元素包括:
enum关键字
名称
允许使用的值的列表
除上述基本元素,枚举类型还可以:
实现接口
定义变量
定义方法
与值对应的类的定义体
4.3 代码示例
4.3.1 创建枚举类型
public enum Grade { A, B, C, D, F, INCOMPLETE };
这是枚举类型的最基本的创建方式,也是最常用的方式。
4.3.2 内联方式(inline)创建
枚举还可以通过内联方式创建:
public class Report { public static enum Grade1 {A, B, C}; // the "static" keyword is redundant. public enum Grade2 {A, B, C}; }
注意static关键字是默认的,不需显式声明。
4.3.3 定义变量和方法
public enum Grade { // enum values must be at the top. A("excellent"), B("good"), C("pass"), F("fail"); // there is a semicolon. // field private String description; // the constructor must be private(the compiler set it by default) // so it can be omitted. private Grade(String description) { this.description = description; } // method public String getDescription() { return this.description; } }
枚举的值定义在最上方,最后一个值的定义由";"结束。
构造器必须为private,由编译器自动添加,不需显式声明。
4.3.4 与值对应的类的定义体
public enum Grade implements Descriptable { A("excellent") { @Override public String getDescription() { return "congratulations! you got an excellent grade!"; } }, B("good") { @Override public String getDescription() { return "well done! your grade is good!"; } }, C("pass") { @Override public String getDescription() { return "you passed the exam."; } }, F("fail") { @Override public String getDescription() { return "sorry, you failed the exam!"; } }; private String description; Grade(String description) { this.description = description; } } public interface Descriptable { String getDescription(); }
枚举可实现接口,并可以在每个值上提供特定的实现。
相关文章推荐
- Java学习笔记之JDK1.5新特性(五):枚举类
- JDK 1.5 新特性学习笔记(1)
- 黑马程序员 java学习笔记 Day9:JDK1.5新特性
- JDK 1.5 新特性学习笔记(2)
- 一个JDK1.5的新特性:枚举学习笔记
- JDK 1.5 新特性学习笔记(4)
- Java学习笔记之JDK1.5新特性(一):静态导入
- Java学习笔记之JDK1.5新特性(二):增强for循环
- Java学习笔记之JDK1.5新特性(三):可变参数
- 黑马程序员_java基础加强学习笔记之(JDK1.5新特性)
- Java学习笔记之JDK1.5新特性(四):自动装箱和自动拆箱
- Javaweb学习笔记——(七)——————myexlipse基本使用、jdk5.0新特性及反射讲解
- 黑马程序员—Java学习笔记之集合框架(三)以及1.5新特性
- Java学习笔记22 jdk5.0新特性
- Java学习笔记——JDK1.7的新特性。
- JavaSE:jdk1.5-1.6新特性笔记
- 【JavaSE学习笔记】JDK1.8常用新特性
- 黑马程序员——JAVA学习笔记——Jdk5.0新特性
- JDK核心技术卷II高级特性(原书第八版)学习笔记1——流与文件1
- JAVA学习第二十七课(多线程(六))- 多生产者多消费者问题(JDK1.5新特性)