`
davidxiaozhi
  • 浏览: 236845 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

枚举类型总结(转)

阅读更多

DK1.5引入了新的类型——枚举。在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便。

用法一:常量

JDK1.5 之前,我们定义常量都是: public static  fianl.... 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。

 

Java代码

public enum Color {  
  RED, GREEN, BLANK, YELLOW  
}  
 

 

用法二:switch

JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。

 

Java代码

enum Signal {  
    GREEN, YELLOW, RED  
}  
public class TrafficLight {  
    Signal color = Signal.RED;  
    public void change() {  
        switch (color) {  
        case RED:  
            color = Signal.GREEN;  
            break;  
        case YELLOW:  
            color = Signal.RED;  
            break;  
        case GREEN:  
            color = Signal.YELLOW;  
            break;  
        }  
    }  
}  
 

 

 

用法三:向枚举中添加新方法

如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且 Java 要求必须先定义 enum 实例。

 

Java代码

public enum Color {  
    RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);  
    // 成员变量  
    private String name;  
    private int index;  
    // 构造方法  
    private Color(String name, int index) {  
        this.name = name;  
        this.index = index;  
    }  
    // 普通方法  
    public static String getName(int index) {  
        for (Color c : Color.values()) {  
            if (c.getIndex() == index) {  
                return c.name;  
            }  
        }  
        return null;  
    }  
    // get set 方法  
    public String getName() {  
        return name;  
    }  
    public void setName(String name) {  
        this.name = name;  
    }  
    public int getIndex() {  
        return index;  
    }  
    public void setIndex(int index) {  
        this.index = index;  
    }  
}  
 

 

 

用法四:覆盖枚举的方法

下面给出一个toString()方法覆盖的例子。

 

Java代码

public enum Color {  
    RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);  
    // 成员变量  
    private String name;  
    private int index;  
    // 构造方法  
    private Color(String name, int index) {  
        this.name = name;  
        this.index = index;  
    }  
    //覆盖方法  
    @Override  
    public String toString() {  
        return this.index+"_"+this.name;  
    }  
}  
 

 

用法五:实现接口

所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。

 

Java代码
    public interface Behaviour {  
        void print();  
        String getInfo();  
    }  
    public enum Color implements Behaviour{  
        RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);  
        // 成员变量  
        private String name;  
        private int index;  
        // 构造方法  
        private Color(String name, int index) {  
            this.name = name;  
            this.index = index;  
        }  
    //接口方法  
        @Override  
        public String getInfo() {  
            return this.name;  
        }  
        //接口方法  
        @Override  
        public void print() {  
            System.out.println(this.index+":"+this.name);  
        }  
    }  
 

 

用法六:使用接口组织枚举

 

    public interface Food {  
        enum Coffee implements Food{  
            BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO  
        }  
        enum Dessert implements Food{  
            FRUIT, CAKE, GELATO  
        }  
    }  
 

 

用法七:关于枚举集合的使用

java.util.EnumSet和java.util.EnumMap是两个枚举集合。EnumSet保证集合中的元素不重复;EnumMap中的 key是enum类型,而value则可以是任意类型。关于这个两个集合的使用就不在这里赘述,可以参考JDK文档。

分享到:
评论

相关推荐

    MySQL常用类型转换函数总结(推荐)

    主要介绍了MySQL常用类型转换函数总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Vivado HLS 视频课程总结

    7.2 枚举类型 22 8 Vivado HLS中的C++基本运算 23 9 测试平台的基本架构 25 9.1 Test Bench 25 9.2 C Test Bench 26 10 测试激励 28 11 测试输出检测与格式控制 28 11.1 Scoreboard 28 11.2 输出格式控制 30 12 接口...

    Java基础知识点总结.docx

    把map集合转成set的方法 82 使用集合的技巧 83 Collections--集合工具类 83 Arrays—数组对象工具类 84 增强for循环 85 可变参数(...) 86 枚举:关键字 enum 86 自动拆装箱 86 泛型 87 <java.lang>System 89 ...

    C++中强制转换函数总结

     将地址a转换成类型T,T和a必须是指针、引用、算术类型或枚举类型。  表达式static_cast(a), a的值转换为模板中指定的类型T.在运行时转换过程中,不进行类型检查来确保转换的安全性。  例子:  class B { ...

    JavaSE 五万字总结.pdf

    JavaSE总结 Java基础语法 类型转换 运算符 流程控制 循环 Random 数组 方法 方法重载 递归 二进制 类和对象 成员变量局和部变量 封装 构造方法 String 集合 继承 GIT 抽象类 多态 Java8 异常 泛型 Map File IO 多...

    Java 基础核心总结 +经典算法大全.rar

    《Java 基础核心总结》 Java 概述 什么是 Java2 Java 的特点Java 开发环境 JDK JRE Java 开发环境配置 Java 基本语法 数据类型基础语法运算符 Java 执行控制流程条件语句 if 条件语句 if...else 条件语句if...else ...

    EDA/PLD中的C++中强制转换函数总结

     将地址a转换成类型T,T和a必须是指针、引用、算术类型或枚举类型。  表达式static_cast(a), a的值转换为模板中指定的类型T.在运行时转换过程中,不进行类型检查来确保转换的安全性。  例子:  class B { ...

    java IO章节的总结

    SequenceInputStream(Enumeration e)枚举类型e中包含了若干个要被串联的输入流 SequenceInputStream(InputStream s1, InputStream s2)先读取s1中数据。再读s2的数据。 以上能够直接对数据进行读和写的流叫节点流...

    编程思想下篇

    由于上传文件大小限制该资源为上下篇 本资源为下篇 第1章 对象导论 1.1 抽象过程 1.2 每个对象都有一个接口 1.3 每个对象都提供服务 ...第19章 枚举类型 第20章 注解 第21章 并发 第22章 图形化用户界面

    Thinking in java4(中文高清版)-java的'圣经'

    非静态实例初始化 5.8 数组初始化 5.8.1 可变参数列表 5.9 枚举类型 5.10 总结 第6章 访问权限控制 第7章 复用类 第8章 多态 第9章 接口 第10章 内部类 第11章 持有对象 第12章 通过异常处理错误 第13章 字符串 第...

    Swift语言开发常见问题总结.docx

    利用Swift的类型推断能力减少显式类型声明。 选项集(OptSet)和可选(Optional) 使用if let、guard let解包可选值。 利用.none、.some构造可选类型。 运算符重载 自定义运算符以符合业务逻辑需求。 扩展...

    C语言中枚举与指针的实例详解

     总结一下, 定义枚举,用typedef enum关键字, 比如 typedef enum{Red,Green,Blue} Color3;  枚举到数值的转换,如果没有指定代表数值就是从0开始算, 比如 Color3 c=Red; printf(“%d”,c);会显示0, 除非指定 如...

    C语言解析教程(原书第4版)(美) 凯利.pdf

    第7章 位操作符和枚举类型 7.1 位操作符和表达式 7.1.1 按位求反 7.1.2 补码 7.1.3 位逻辑操作符 7.1.4 左移位和右移位操作符 7.2 掩码 7.3 软件工具:打印int值的二进制形式 7.4 包装和解包 7.5 枚举类型 7.6 例子...

    明解C语言(第3版)入门篇.[日]柴田望洋(带详细书签).pdf 【半高清】

    8-3 枚举类型 246 枚举类型 246 枚举常量 248 命名空间 250 8-4 递归函数 251 函数和类型 251 阶乘 252 8-5 输入输出和字符 255 getchar函数和EOF 255 从输入复制到输出 256 数字字符计数 256 字符 258 ...

    java 编程入门思考

    2.2.2 特殊情况:主类型 2.2.3 Java中的数组 2.3 绝对不要清除对象 2.3.1 作用域 2.3.2 对象的作用域 2.4 新建数据类型:类 2.4.1 字段和方法 2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 ...

    C#考试简答题总结 (2).docx

    3.枚举型与结构型的区别 3. 数据类型转换 4. break与continue 5. 访问修饰符 6. 类与对象 7. 数据抽象与过程抽象 9.属性访问器 10. 封装与信息隐藏 5 11.装箱与拆箱 11. 继承与多态 12. 按值传参与按引用...

    C#考试简答题总结 (1).docx

    枚举型与结构型的区别 3. 数据类型转换 4. break与continue 5. 访问修饰符 6. 类与对象 7. 数据抽象与过程抽象 8. 属性访问器 (什么是属性访问器?) ppt19. 封装与信息隐藏 10. 装箱与拆箱 (什么是装箱和拆箱?请...

    ASP.NET中的C#基础知识

    说明:asp.net作为一种开发框架现在已经广为应用,其开发的基础除了前端的html、css、JavaScript等后端最重要的语言支持还是...值类型包括简单类型、枚举类型和结构类型。 简单类型包含数值类型和bool类型。(一般情况

    [你必须知道的222个C++语言问题].范立锋.扫描版[ED2000.COM]-第四部分

    本书涵盖了C++与C语言的区别和联系、面向对象的设计思想、C++中的类和对象、继承、多态、指针与字符串、运算符重载、用户自定义数据类型、结构和枚举、类型转换与RTTI、异常处理、标准模板库、通用函数及模板、C++中...

Global site tag (gtag.js) - Google Analytics