【Java】6.9 枚举类
目录
枚举类简介
实现枚举类
枚举类的成员变量、方法和构造器
枚举类简介
【什么是枚举类?】
枚举类就是实例有限且固定的类。且在定义时,枚举类要在第一行全部列出
【为什么要是用枚举类?】
使用枚举类可以使代码更高效、更简洁、更安全,也更容易维护。比如可以使用枚举类来代替常量(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;
【手动定义枚举类的设计方式】
- 通过private将构造器隐藏起来
- 把这个类所有可能实例使用public static final修饰类的变量来保存
【枚举类与普通类的异同】
相同的地方:他一样可以有自己的成员变量、方法、构造器和可以实现一个或多个接口
不同的地方:
- 枚举类可以实现一个或多个接口,使用enum定义的枚举类默认继承了java.lang.Enum类,而非默认的Object类,因此枚举类不能显式继承其它父类。其中,java.lang.Enum类实现了java.lang.Serializable和java.lang.Comparable两个接口
- 使用enum定义、非抽象的枚举类默认会使用final修饰,因此枚举类不能派生子类
- 枚举类的构造器只能使用private修饰符修饰
- 枚举类的所有实例必须在第一行出显式列出
/** * @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类中准备的方法】
- int comparaTo(E o):用于同一类型枚举实例的比较。
- String name():返回次枚举实例的名称
- int ordinal():返回枚举值在美剧类中的索引值
- 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 枚举类相关推荐
- Java状态码枚举类
前言:当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求.当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请 ...
- c枚举类型enum例题_一篇文章让你详细了解Java中Enum枚举类的使用
文章前记 程序员工作久了便可能整日忙碌于"增删改查"中,迷失方向,毫无进步. 该公众号致力于分享软件开发相关的原创干货,助你完成从程序员到架构师的进阶之路! 努力!做一个NB的Co ...
- java中的枚举类_java中的枚举类型
java中为了对参数类型使用限定,引入了泛型,实现了在编译期对参数类型是否合法的判断.同样,java为了对参数的值的限定,引入了枚举类,实现了在编译期对参数的值是否合法的判断. 首先我们用自定义类的方 ...
- java.lang包—枚举类Enum
原文作者:山高我为 原文地址:java enum的用法详解 目录 一.enum关键字 二.Enum类源码 三.疑问 四.Enum常见用法 一.enum关键字 enum关键字是在Java1.5也就是Ja ...
- enum java 比较_Kotlin与Java比较:枚举类
前言 Kotlin作为JVM系的语言,起源于Java又不同于Java.通过在语言层面比较两者的区别,可以使得开发者能够快速学习,融会贯通. 枚举使用场景 使用枚举的场景非常明确,即只要一个类的对象是有 ...
- 一文带你深入理解【Java基础】· 枚举类
写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...
- Java中的枚举类是什么?enum关键字怎么使用?
枚举类 文章目录 枚举类 枚举类的使用:入门 自定义枚举类 方法一:自定义枚举类 方式二: enum 关键字定义枚举类(主要用该方式) Enum类的主要方法 使用enum关键字定义的枚举类实现接口 主 ...
- Java面向对象编程-枚举类
枚举类 1.枚举 很多的编程语言都会提供有枚举的概念,但是Java一直到JDK1.5之后才提出了枚举的概念 在实际的开发之中,枚举的实际作用是用于定义有限个数对象的一种结构(多例设计),枚举就属于多例 ...
- java中的枚举类与注解学习笔记
java中的枚举和注解 01.枚举类的使用 1.1.枚举类的理解 1.2.自定义枚举类 1.3.使用enum关键字定义枚举类 1.4.Enum类中的常用方法 1.5.使用enum关键字定义的枚举类实现 ...
- 【Java高级】枚举类与注解
目录 01 枚举类 1.1 枚举类的理解 1.2 自定义枚举类 1.3 enum关键字定义枚举类 1.4 Enum中的常用方法 1.5 使用enum关键字定义的枚举类实现接口 02 注解 ...
最新文章
- 【CVPR 2020】神经网络架构搜索(NAS)论文和代码汇总
- wxWidgets随笔(13)-wxBoxSizer类Basic Box Sizer(2)
- OpenCASCADE:使用扩展数据交换 XDE之保存视图
- 单片机的程序有多大?
- Mysql事项,视图,函数,触发器命令
- 浅谈密码学中数论基础
- android studio 自动生成sql语句,Android Studio Plugin 插件开发教程(三) —— 制作一个自动生成数据库代码的插件...
- Maven生命周期——2
- python输入一个字母标识符_Python基础入门语法和变量类型(一)
- L1-049__056
- 透视特洛伊木马程序开发技术
- arcgis重心迁移分析_ArcGIS支持下三峡库区适度人口重心迁移研究
- win10无线投屏_原来小米的投屏功能,如此强大,每天都偷偷用,秒杀4k电视
- matlab特定等值线,从Matlab轮廓函数中选择等值线
- LookaHead优化器
- 炉石传说服务器维护公告,炉石传说3月15日更新维护公告 炉石更新日志
- TCP、IP、链路层报文l结构
- 我就这样忍了一生——星云大师
- 图灵机器人之Python实现
- EasyX入门 简易绘图、上色