博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JDK 1.5 新特性学习笔记(3)
阅读量:6415 次
发布时间:2019-06-23

本文共 2076 字,大约阅读时间需要 6 分钟。

  hot3.png

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 创建枚举类型

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();}

枚举可实现接口,并可以在每个值上提供特定的实现。  

转载于:https://my.oschina.net/moon/blog/24049

你可能感兴趣的文章
循环和选择
查看>>
文本比较算法Ⅱ——Needleman/Wunsch算法
查看>>
idea的debug调试快捷键
查看>>
阿里云ECS部署ES
查看>>
你对DBA的定义是什么?
查看>>
面试常问-数据库索引实现原理
查看>>
黑马程序员————类的第五个成员内部类
查看>>
46. Permutations
查看>>
团队编程项目作业名称-成员简介
查看>>
加法器
查看>>
C#中生成的随机数为什么不随机?
查看>>
【Valid Number】cpp
查看>>
ASP.NET MVC3权限验证(方法1)
查看>>
cocos2d下的游戏菜单代码分析
查看>>
linux简单命令---网络编程
查看>>
ajax基础------备忘
查看>>
kafka入门学习---1 启动kakfa
查看>>
关于Android菜单上的记录
查看>>
黄聪:利用ImageMagicK给图片加水印
查看>>
由lwip的mbox中netbuf传递看指针的指针
查看>>