枚举

一、枚举类型详细说明

简单的说,Enum一般用来表示一组相同类型的常量。如性别、日期、月份、颜色等。对这些属性用常量的好处是显而易见的,不仅可以保证单例,且在比较的时候可以用”==”来替

换equals。JDK1.5之前没有Enum这个类型,那时候一般用接口常量来替代。

定义枚举类型时本质上就是在定义一个类别,只不过很多细节由编译器帮您完成了,所以某些程度上,enum是一个关键字,它的作用就像是class或interface。(这就是为什么有些人找不到其中的value()方法)

二、枚举类型的使用方法

1)常量

在Enum出现之前,我们定义常量一般是:public static fianl....      这样的常量比较单一,而有了枚举就好的多,它可以看成是对象常量,而且还有类似集合的功能,同时定义多个对象常量。

如:

<span style="font-size:14px;">enum Signal { GREEN, YELLOW, RED;
} </span>

用的时候:Signal s = Signal.RED;就行了

注:用这种方法使用枚举类型,RED后面的分号可以不用写

2)switch

<span style="font-size:14px;">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;}}
} </span>

3)向枚举中添加新方法

<span style="font-size:14px;">public enum Color {RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLOW("黄色", 4) ;// 成员变量private final String name;private final int index;// 构造方法,必须私有private Color(String name, int index) {this.name = name; this.index = index;}   public String getName() { return name; }public int getIndex() { return index; }
}
</span>

因为是常量,所以不能让其他人可以new这个对象,也就是将这个类封装起来,不让任何人可以new,方法是通过将构造方法私有化即可。private Color(String name, int index)

注:如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。也就是这里的YELLOW("黄色",4)后面必须有“ ; ”。

三、枚举的静态方法

枚举的静态方法有两个

1)values()获取枚举类型的所有枚举常量返回值为static ElementType[]

for(UserTypeEnum userType: UserTypeEnum.values()){
<span style="white-space:pre"> </span>if(userType.getName().equalsIgnoreCase(name)){return userType.getType();}
}

2)valueOf(Class<T> enumType, String name) 返回带指定名称的指定枚举类型的枚举常量。返回值为static ElementType

注:然后就发现一个问题,value方法我怎么找不到,查查才发现, values()方法是编译器插入到enum定义中的static方法,所以,当你将enum实例向上转型为父类Enum类,

values()就不可访问了。解决办法:在java.lang包下一个java.lang.annotation包(注释的意思),里面有一个ELementType类,其中就有想要找的这两个静态方法。所以不能说

枚举类型实质上继承java.lang.Enum类。

四、EnumSet类和EnumMap类

这两个类在java.util包中,看看api,基本的运用应该没什么问题。

java之 ------ 枚举类型相关推荐

  1. 深度分析Java的枚举类型——枚举的线程安全性及序列化问题

    点击关注,快速进阶高级架构师 作者:Hollis 写在前面:Java SE5提供了一种新的类型-Java的枚举类型,关键字enum可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为 ...

  2. 深度分析 Java 的枚举类型:枚举的线程安全性及序列化问题(转)

    写在前面: Java SE5 提供了一种新的类型 Java的枚举类型,关键字 enum 可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用,这是一种非常有用的功能 ...

  3. 深度分析 Java 的枚举类型:枚举的线程安全性及序列化问题

    本文作者: 伯乐在线 - HollisChuang .未经作者许可,禁止转载! 欢迎加入伯乐在线 专栏作者. 写在前面: Java SE5 提供了一种新的类型 Java的枚举类型,关键字 enum 可 ...

  4. java(18) - 枚举类型和静态导入

    一.枚举: 我们定义的枚举类都是继承于java.lang.Enum类,枚举中的每个成员默认都是 public static final. 枚举类型的使用是通过 枚举类名.值 的方式来调用. 对于枚举类 ...

  5. java的枚举类型是什么_什么是枚举(java枚举类型enum用法)

    最佳回答 枚举 1.枚举 (enumeration) 值类型的一种特殊形式,它从 System.Enum 继承,并为基础基元类型的值提供备用名称.枚举类型有名称.基础类型和一组字段.基础类型. &qu ...

  6. java之枚举类型enum

    一.什么是枚举类 1.在某些情况下,一个类的对象时有限且固定的,如季节类,它只有春夏秋冬4个对象这种实例数目有限且固定的类,在 Java 中可以定义为枚举类. 2.枚举类是一种特殊的类,它和普通的类一 ...

  7. 【Java】枚举类型

    一. 枚举是什么 隐约记得自己大一的时候在 C 语言的课程中学习过枚举 , 但是已经忘光光了 . 那么本文就在 Java 中再学一遍吧 . 枚举是一组常量集合,这些常量具有特定的标识符 . 在 Jav ...

  8. java之枚举类型应用

    一. 前言 为什么使用枚举类型? 在此之前,我们需要创建一个整形常量集,但是这些整型常量集并不会必然地将其自身的取值限制在这个常量集的范围之内,因此他们更有风险,且更难以使用.但是,枚举类型消除了这一 ...

  9. Java核心技术----枚举类型与泛型

    一.枚举类型 1.使用枚举类型设置常量 其中,enum是定义枚举类型关键使用枚举类型定义常量的语法如下: public enum Constants{ Constants_A, Constants_B ...

最新文章

  1. AI时代我们最好做某领域的专家或高手
  2. python3基础教程廖雪峰云-廖雪峰Python3教程---实战day1-day13总结
  3. 自动化测试有缺点吗?
  4. Shell脚本传递带有空格的参数
  5. 数据库开发管理中的十条建议
  6. 高级软件工程第一次作业--准备
  7. eslint 换行_ESLint代码风格检测
  8. CV Code | 本周新出计算机视觉开源代码汇总(南理SGE 和Intel的实时动作识别很吸引人)...
  9. SpringBoot2.1.5(13)--- SpringBoot 特性下
  10. 1269: [AHOI2006]文本编辑器editor
  11. 计算机网络管理4级有什么用,计算机网络管理二级4浅析.doc
  12. 盒子模型之内边距(HTML、CSS)
  13. Pollen 1.5 发布,Web 投票系统
  14. 如何高效地学习机器学习算法?
  15. zen-Coding
  16. 跑酷游戏的一些bug总结(滥用FixedUpdate的坑)
  17. 浅析基于微软SQL Server 2012 Parallel Data Warehouse的大数据解决方案
  18. Visio的安装教程
  19. 微型计算机原理与接口技术朱金钧课后答案,微型计算机原理及应用技术 第3版...
  20. 用python做蒙特卡洛仿真算法

热门文章

  1. 2021.12.28同花顺--智能--选股平台----技术指标--其它指标--逍遥买卖宝--指标B
  2. 2010互联网第一件大事件——谷歌退出中国内地
  3. 数字字符串位数不足左边补零
  4. String和对象的转换
  5. 积分电路和微分电路的工作原理
  6. 面对中小型机房动力环境该如何实现监控?
  7. 推荐系统引擎——模型(1)
  8. 计算机控制双积分系统,双积分式ADC的原理及如何设计
  9. 盆栽的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  10. 杨昕立计算机学院,写在告别之前——那些来自辅导员们的悄悄话