目录

枚举类简介

实现枚举类

枚举类的成员变量、方法和构造器


枚举类简介

【什么是枚举类?】

枚举类就是实例有限且固定的类。且在定义时,枚举类要在第一行全部列出

【为什么要是用枚举类?】

使用枚举类可以使代码更高效、更简洁、更安全,也更容易维护。比如可以使用枚举类来代替常量(public static final ...),限定数据的取值范围等。

【什么时候需要使用枚举类?】

当一个类的实例有限且固定的时候,需要使用枚举类

【如何实现枚举类?】

实现枚举类

public static final int SPRING = 1;
public static final int SUMMER = 2;
public static final int FALL = 3;
public static final int WINTER = 4;

【手动定义枚举类的设计方式】

  1. 通过private将构造器隐藏起来
  2. 把这个类所有可能实例使用public static final修饰类的变量来保存

【枚举类与普通类的异同】

相同的地方:他一样可以有自己的成员变量、方法、构造器和可以实现一个或多个接口

不同的地方:

  1. 枚举类可以实现一个或多个接口,使用enum定义的枚举类默认继承了java.lang.Enum类,而非默认的Object类,因此枚举类不能显式继承其它父类。其中,java.lang.Enum类实现了java.lang.Serializable和java.lang.Comparable两个接口
  2. 使用enum定义、非抽象的枚举类默认会使用final修饰,因此枚举类不能派生子类
  3. 枚举类的构造器只能使用private修饰符修饰
  4. 枚举类的所有实例必须在第一行出显式列出
/** * @ClassName: SeasonEnum* @description: 枚举类* @author: FFIDEAL* @Date: 2020年3月3日 下午8:40:20*/public enum SeasonEnum {//丁一航列出四个枚举类SPRING,SUMMER,FALL,WINTER;
}
/** * @ClassName: EnumTest* @description: 测试枚举类* @author: FFIDEAL* @Date: 2020年3月3日 下午8:42:54*/public class EnumTest {public void judge(SeasonEnum s) {//switch与距离的表达式可以是枚举类/byte/short/int/char/Stringswitch(s){case SPRING:System.out.println("春暖花开");break;case SUMMER:System.out.println("夏日炎炎");break;case FALL:System.out.println("秋高气爽");break;case WINTER:System.out.println("白雪皑皑");break;}}public static void main(String[] args) {//枚举类有一个默认的values方法,返回该枚举类的所有实例for(SeasonEnum s : SeasonEnum.values()) {System.out.println(s);}//使用枚举实例是,可以通过EnumClass.variable形式来访问new EnumTest().judge(SeasonEnum.SPRING);}
}

【java.lang.Enum类中准备的方法】

  1. int comparaTo(E o):用于同一类型枚举实例的比较。
  2. String name():返回次枚举实例的名称
  3. int ordinal():返回枚举值在美剧类中的索引值
  4. String toString():常用

枚举类的成员变量、方法和构造器

/** * @ClassName: Gender* @description: 定义一个枚举类,设置逻辑方法*     setName传进一个参数,若与枚举类相匹配就返回,若不相匹配,就输出“参数错误”* @author: FFIDEAL* @Date: 2020年3月3日 下午9:12:43*/public enum Gender {MALE,FEMALE;private String name;public void setName(String name) {switch(this) {case MALE:if(name.equals("男")) {this.name = name;}else {System.out.println("参数错误");}break;case FEMALE:if(name.equals("女")) {this.name = name;}else {System.out.println("参数错误");}}}public String getName() {return this.name;}
}
/** * @ClassName: GenderTest* @description: 枚举类Gender的测试类* @author: FFIDEAL* @Date: 2020年3月3日 下午9:19:18*/public class GenderTest {public static void main(String[] args) {//通过Enum的values()方法来获取指定枚举类的枚举值Gender g = Enum.valueOf(Gender.class, "FEMALE");g.setName("女");System.out.println(g + "代表:" + g.getName());//以下代码会出现参数错误
//      g.setName("男");
//      System.out.println(g + "代表:" + g.getName());}
}

【Java】6.9 枚举类相关推荐

  1. Java状态码枚举类

    前言:当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求.当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请 ...

  2. c枚举类型enum例题_一篇文章让你详细了解Java中Enum枚举类的使用

    文章前记 程序员工作久了便可能整日忙碌于"增删改查"中,迷失方向,毫无进步. 该公众号致力于分享软件开发相关的原创干货,助你完成从程序员到架构师的进阶之路! 努力!做一个NB的Co ...

  3. java中的枚举类_java中的枚举类型

    java中为了对参数类型使用限定,引入了泛型,实现了在编译期对参数类型是否合法的判断.同样,java为了对参数的值的限定,引入了枚举类,实现了在编译期对参数的值是否合法的判断. 首先我们用自定义类的方 ...

  4. java.lang包—枚举类Enum

    原文作者:山高我为 原文地址:java enum的用法详解 目录 一.enum关键字 二.Enum类源码 三.疑问 四.Enum常见用法 一.enum关键字 enum关键字是在Java1.5也就是Ja ...

  5. enum java 比较_Kotlin与Java比较:枚举类

    前言 Kotlin作为JVM系的语言,起源于Java又不同于Java.通过在语言层面比较两者的区别,可以使得开发者能够快速学习,融会贯通. 枚举使用场景 使用枚举的场景非常明确,即只要一个类的对象是有 ...

  6. 一文带你深入理解【Java基础】· 枚举类

    写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...

  7. Java中的枚举类是什么?enum关键字怎么使用?

    枚举类 文章目录 枚举类 枚举类的使用:入门 自定义枚举类 方法一:自定义枚举类 方式二: enum 关键字定义枚举类(主要用该方式) Enum类的主要方法 使用enum关键字定义的枚举类实现接口 主 ...

  8. Java面向对象编程-枚举类

    枚举类 1.枚举 很多的编程语言都会提供有枚举的概念,但是Java一直到JDK1.5之后才提出了枚举的概念 在实际的开发之中,枚举的实际作用是用于定义有限个数对象的一种结构(多例设计),枚举就属于多例 ...

  9. java中的枚举类与注解学习笔记

    java中的枚举和注解 01.枚举类的使用 1.1.枚举类的理解 1.2.自定义枚举类 1.3.使用enum关键字定义枚举类 1.4.Enum类中的常用方法 1.5.使用enum关键字定义的枚举类实现 ...

  10. 【Java高级】枚举类与注解

    目录​​​​​​​ 01 枚举类 1.1 枚举类的理解 1.2 自定义枚举类 1.3 enum关键字定义枚举类 1.4 Enum中的常用方法 1.5 使用enum关键字定义的枚举类实现接口 02 注解 ...

最新文章

  1. 【CVPR 2020】神经网络架构搜索(NAS)论文和代码汇总
  2. wxWidgets随笔(13)-wxBoxSizer类Basic Box Sizer(2)
  3. OpenCASCADE:使用扩展数据交换 XDE之保存视图
  4. 单片机的程序有多大?
  5. Mysql事项,视图,函数,触发器命令
  6. 浅谈密码学中数论基础
  7. android studio 自动生成sql语句,Android Studio Plugin 插件开发教程(三) —— 制作一个自动生成数据库代码的插件...
  8. Maven生命周期——2
  9. python输入一个字母标识符_Python基础入门语法和变量类型(一)
  10. L1-049__056
  11. 透视特洛伊木马程序开发技术
  12. arcgis重心迁移分析_ArcGIS支持下三峡库区适度人口重心迁移研究
  13. win10无线投屏_原来小米的投屏功能,如此强大,每天都偷偷用,秒杀4k电视
  14. matlab特定等值线,从Matlab轮廓函数中选择等值线
  15. LookaHead优化器
  16. 炉石传说服务器维护公告,炉石传说3月15日更新维护公告 炉石更新日志
  17. TCP、IP、链路层报文l结构
  18. 我就这样忍了一生——星云大师
  19. 图灵机器人之Python实现
  20. EasyX入门 简易绘图、上色

热门文章

  1. js自定义类,混合的构造函数/原型方式
  2. MyBatis学习 之 二、SQL语句映射文件(1)resultMap
  3. OpenCV基本步骤(初步学习)
  4. 【学习笔记】〖ASP.NET〗连接字符串的函数
  5. Ubuntu下千千静听Audacious的安装步骤详解
  6. VC学习笔记 -单选按钮控件(Ridio Button)的使用
  7. 解决AD 不能打开DDB文件的解决方案
  8. ubuntu 12.04下apache 配置家目录地址
  9. BLE 配对流程(转自襄坤在线)
  10. 如何设置使windows(dos)命令中目录和文件可以自动完成和补齐