当前位置: 首页 > news >正文

枚举类的简单应用

取自《java入门到精通》的例子

枚举:可以用来表示一组取值范围固定的变量。

enum Position {
    HERE, THERE
}
enum Size {
    SMALL, MEDIUM, LARGE
}

枚举类可以看作是一个类,继承自java.lang.Enum。其中每一成员都是此类的一个实例化对象,并且他们被public static final 修饰。

同时枚举类也可以看作是一种数据结构,即一个枚举和它的诸多元素。

 

Enum类是所有枚举类型的父类,它是一个没有抽象方法的抽象类。该类定义了枚举类型的常用方法。例如枚举元素间的比较、获得枚举元素定义的次序、枚举元素定义的名称等。

表1  Enum类的常用方法

方法名

作用

compareTo(E o)

比较枚举元素的顺序

equals(Object other)

判断枚举元素是否相同

name()

获得枚举元素在定义时的名称

ordinal()

获得枚举元素在定义时的顺序,从0开始计数

//测试Enum类的方法
for (Size s : Size.values()) {  //values()方法返回枚举类所有元素组成的数组
            System.out.println("current item index " + s.ordinal());  //ordinal()返回当前元素的序号
            System.out.println("current item compare to SMALL :"  
                    + s.compareTo(Size.SMALL));  //compareTo()返回和参数元素之间的相对位置
            System.out.println("current item equals to SMALL :"
                    + s.equals(Size.SMALL));  //Enum类型覆盖了equals()方法
            System.out.println("current item == SMALL :" + (s == Size.SMALL));
            System.out.println("*******************************");
        }

 

除了不能继承外,枚举类型可以看做是普通类。这意味着您可以在枚举类型中增加方法,甚至是main方法。由于toString()方法只是简单的返回定义枚举变量时指定的名称,提供的信息非常有限。可以为枚举类型提供一个构造方法来增加额外的信息,并提供相应的方法来获得这些信息。

enum PizzaSize {
    SMALL("i am small pizza"), MEDIUM("i am medium pizza"), LAEGE(
            "i am large pizza");//申明枚举元素同时调用构造方法
    private String description;//私有的成员变量

    private PizzaSize(String description) {//构造方法初始化
        this.description = description;
    }

    public String getSize() {//私有内容的getfangfa
        return description;
    }
}

测试上面的枚举:

for (PizzaSize ps : PizzaSize.values()) {
     System.out.println(ps.toString() + ":" + ps.getSize());
}

 

把枚举类型看作是一种数据结构,可以增强对数据访问的安全性,访问者不能要求访问不存在的数据。

enum JDBCInfo {
    DRIVER, URL, USERNAME, PASSWORD;// jdbc连接参数

    public static String getJDBCInfo(JDBCInfo info) {// 根据枚举类元素的种类来获取数据
        switch (info) { // switch支持枚举类
        case DRIVER:
            return "com.mysql.jdbc.driver";
        case URL:
            return "jdbc:mqsql://localhost:3306/db_database";
        case USERNAME:
            return "username";
        case PASSWORD:
            return "password";
        default:
            return null;
        }
    }
}

测试上面的枚举类:

// 使用enum类型表示jdbc参数
for (JDBCInfo info : JDBCInfo.values()) {
    System.out.println(info.toString() + ":"
        + JDBCInfo.getJDBCInfo(info));
}

 

 

转载于:https://www.cnblogs.com/mycome/p/3722284.html

相关文章:

  • 手把手教你启用Win10的Linux子系统(超详细)
  • [转载]C# Double toString保留小数点方法
  • 自动化部署打破混乱之墙 助力开发、运维、测试协同作战
  • spring restTemplate 上传数据流/字节数组
  • Windows下leapmotion中touchless的使用
  • Session丢失的问题!(转)
  • 架构探险笔记4-使框架具备AOP特性(上)
  • QT 字符串相等间距字符间增加字符
  • 第六篇:面向对象
  • LinuxShell 首字母大写
  • 柯里化/偏函数/Curring用法
  • 兄弟连区块链教程区块链背后的信息安全2DES、3DES加密算法原理二
  • [leetcode]_Symmetric Tree
  • Python使用Xpath轻松爬虫(脑残式)
  • 在实验静态块等时遇到到关于main函数的问题
  • 2017年终总结、随想
  • 4个实用的微服务测试策略
  • Android 控件背景颜色处理
  • css属性的继承、初识值、计算值、当前值、应用值
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Lsb图片隐写
  • Mithril.js 入门介绍
  • v-if和v-for连用出现的问题
  • 安卓应用性能调试和优化经验分享
  • 开源SQL-on-Hadoop系统一览
  • 判断客户端类型,Android,iOS,PC
  • 前嗅ForeSpider教程:创建模板
  • 如何进阶一名有竞争力的程序员?
  • 深入 Nginx 之配置篇
  • 小程序01:wepy框架整合iview webapp UI
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 一个项目push到多个远程Git仓库
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 责任链模式的两种实现
  • (12)目标检测_SSD基于pytorch搭建代码
  • (3)llvm ir转换过程
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (十一)c52学习之旅-动态数码管
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (转)我也是一只IT小小鸟
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .Net语言中的StringBuilder:入门到精通
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • [ C++ ] STL---stack与queue
  • [.NET 即时通信SignalR] 认识SignalR (一)
  • [C++进阶篇]STL中vector的使用
  • [flask] flask的基本介绍、flask快速搭建项目并运行
  • [Hadoop in China 2011] 蒋建平:探秘基于Hadoop的华为共有云
  • [HarekazeCTF2019]encode_and_encode 不会编程的崽
  • [hdu 1711] Number Sequence [kmp]