Java枚举类(1)--枚举类的定义、方法使用和接口实现

文章目录

    • 枚举类的理解
    • 枚举类的定义
    • Enum类的主要方法
    • 枚举类实现接口


枚举类的理解

当类的对象只有有限个,且确定的,称此类为枚举类。

当需要定义一组常量时,强烈建议使用枚举类。

如果枚举类中只有一个对象,则可以作为单例模式的实现方式。


枚举类的定义

方式一:jdk5.0之前, 自定义枚举类
方式二:jdk5.0, 可以使用enum关键字定义枚举类

①自定义枚举类

class Season{//1.声明属性:private,final修饰,私有性,不可变性private final String SEASON_NAME;//季节的名称private final String SEASON_DESC;//季节的描述//2.提供私有化构造器,并给属性赋值private Season(String seasonName,String seasonDesc){this.SEASON_NAME = seasonName;this.SEASON_DESC = seasonDesc;}//3.提供当前枚举类的多个对象:public,static,finalpublic static final Season SPRING = new Season("春天", "春暖花开");public static final Season SUMMER = new Season("夏天", "夏日炎炎");public static final Season AUTUMN = new Season("秋天", "秋高气爽");public static final Season WINTER = new Season("冬天", "白雪皑皑");//4.其他诉求1:获取对象属性public String getSEASON_NAME() {return SEASON_NAME;}public String getSEASON_DESC() {return SEASON_DESC;}//4.其他诉求2@Overridepublic String toString() {return "Season{" +"SEASON_NAME='" + SEASON_NAME + '\'' +", SEASON_DESC='" + SEASON_DESC + '\'' +'}';}
}//使用测试
public class EnumTest {public static void main(String[] args) {Season autumn = Season.AUTUMN;System.out.println(autumn);}
}

在这里插入图片描述
②使用enum关键字定义枚举类

使用说明:

1.使用 enum 定义的枚举类默认继承了 java.lang.Enum类,因此不能再继承其他类
2.枚举类的构造器只能使用 private 权限修饰符
3.枚举类的所有实例必须在枚举类中显式列出(, 分隔 ; 结尾),列出的实例系统会自动添加 public static final 修饰
4.必须在枚举类的最开始声明枚举类对象

JDK 1.5 中可以在 switch 表达式中使用Enum定义的枚举类的对象作为表达式, case 子句可以直接使用枚举值的名字, 无需添加枚举类作为限定。

//enum关键字
enum Season{//1.提供当前枚举类的多个对象,对象之间用","隔开,最后用";"SPRING("春天", "春暖花开"),SUMMER("夏天", "夏日炎炎"),AUTUMN("秋天", "秋高气爽"),WINTER("冬天", "白雪皑皑");//2.声明属性:private,final修饰,私有性,不可变性private final String SEASON_NAME;//季节的名称private final String SEASON_DESC;//季节的描述//3.提供私有化构造器,并给属性赋值private Season(String seasonName,String seasonDesc){this.SEASON_NAME = seasonName;this.SEASON_DESC = seasonDesc;}//4.其他诉求1:获取对象属性public String getSEASON_NAME() {return SEASON_NAME;}public String getSEASON_DESC() {return SEASON_DESC;}}//使用测试
public class EnumTest {public static void main(String[] args) {Season autumn = Season.AUTUMN;System.out.println(autumn);}
}

Enum类的主要方法

在这里插入图片描述
常用方法:
values():返回枚举类型的对象数组。该方法可以很方便地遍历所有枚举值
valueOf(String objName):找到枚举类中名为objName的对象,如果没有名为objName的枚举类对象,则抛异常: ILLegaLArgumentException
toString():返回当前枚举类对象常量的名称,若其子类(enum关键字定义的枚举类对象调用该方法时候,若没有重写,则调用此方法)

enum Season{//1.提供当前枚举类的多个对象,对象之间用","隔开,最后用";"SPRING("春天", "春暖花开"),SUMMER("夏天", "夏日炎炎"),AUTUMN("秋天", "秋高气爽"),WINTER("冬天", "白雪皑皑");//2.声明属性:private,final修饰,私有性,不可变性private final String SEASON_NAME;//季节的名称private final String SEASON_DESC;//季节的描述//3.提供私有化构造器,并给属性赋值private Season(String seasonName,String seasonDesc){this.SEASON_NAME = seasonName;this.SEASON_DESC = seasonDesc;}
}//方法使用测试
public class EnumTest {public static void main(String[] args) {//toString()Season autumn = Season.AUTUMN;System.out.println(autumn);System.out.println("***********");//values()Season[] values = Season.values();for (int i = 0; i < values.length; i++) {System.out.println(values[i]);}System.out.println("***********");//valueOf(String str)Season winter = Season.valueOf("WINTER");System.out.println(winter);}
}

枚举类实现接口

和普通 Java 类一样,枚举类可以实现一个或多个接口。

若每个枚举值在调用实现的接口方法呈现相同的行为方式,则只要统一实现该方法即可。

若需要每个枚举值在调用实现的接口方法呈现出不同的行为方式,则可以让每个枚举值分别来实现该方法。

interface itf{void show();
}enum Season implements itf{//1.提供当前枚举类的多个对象,对象之间用","隔开,最后用";"SPRING("春天", "春暖花开"){@Overridepublic void show() {System.out.println("这是春季");}},SUMMER("夏天", "夏日炎炎") {@Overridepublic void show() {System.out.println("这是夏季");}},AUTUMN("秋天", "秋高气爽") {@Overridepublic void show() {System.out.println("这是秋季");}},WINTER("冬天", "白雪皑皑") {@Overridepublic void show() {System.out.println("这是冬季");}};//2.声明属性:private,final修饰,私有性,不可变性private final String SEASON_NAME;//季节的名称private final String SEASON_DESC;//季节的描述//3.提供私有化构造器,并给属性赋值private Season(String seasonName,String seasonDesc){this.SEASON_NAME = seasonName;this.SEASON_DESC = seasonDesc;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/347625.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java备忘录_Java 8备忘单中的可选

java备忘录Java 8 java.util.Optional<T>是scala.Option[T]和Data.Maybe在Haskell中的较差表亲。 但这并不意味着它没有用。 如果您不熟悉此概念&#xff0c;请将Optional想象为可能包含或不包含某些值的容器。 就像Java中的所有引用都可以指向某个对象或为null &#xf…

IDEA中注解注释快捷键及模板

前些天发现了十分不错的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;没有广告&#xff0c;分享给大家&#xff0c;大家可以自行看看。&#xff08;点击跳转人工智能学习资料&#xff09; 文章目录单行注释多行注释文档注释(块注释)方法说明注解自动注…

从方法返回Java 8的可选项时的注意事项

Java 8引入的Optional类一直是该语言版本引入的最具争议的功能之一。 尽管我喜欢这个新的Java类的东西比不喜欢的东西多&#xff0c;但在Java方法中将其用作return类型时&#xff0c;需要考虑一些事情。 我将在本文中讨论其中的一些问题&#xff0c;但不会讨论有关是否应该将Op…

oracle账户解锁28000,oracle 下载 账号密码ORA-28000账户被锁和解锁

今天测试库有个账户的密码忘了&#xff0c;试了十几次就开始提示&#xff1a;ERROR:ORA-28000: the account is locked意思明显就是账户被锁了&#xff0c;可能是用户的资源设置中对密码重试次数做了限制。验证&#xff1a;SQL> select a.username, b.profile, b.resource_n…

让别人和自己看懂自己的程序代码?一文掌握Java单行多行、文档注释以及注解(Annotation)超详细的理解使用,IDEA注释注解快捷键和模板,提高程序代码更有可读性

文章目录单行和多行注释文档注释&#xff08;Java特有&#xff09;Annotation(注解)的理解常见的Annotation示例IDEA注释注解快捷键及模板自定义 AnnotationJDK 中的元注解单行和多行注释 注释的内容不参与编译&#xff0c;即编译以后的.class的字节码文件中不包含注释的内容。…

Java集合(1)--集合概述

Java 集合可分为 Collection 和 Map 两种体系 Collection接口&#xff1a;单列数据&#xff0c;定义了存取一组对象的方法的集合 ——List&#xff1a;元素有序、可重复的集合 ——Set&#xff1a;元素无序、不可重复的集合 Map接口&#xff1a;双列数据&#xff0c;保存具有…

win7下oracle10g安装,专门针对win7下oracle10g安装的详解

Window 7 下面安装Oracle 10g今在win7下安装oracle 10g client的时候遇到下面问题&#xff1a;在执行先决条件的时候&#xff0c;报目前只支持6.0的版本&#xff0c;修改oraparam.ini文件中的以下内容&#xff1a;[Certified Versions]#You can customise error message shown …

Java集合(2)--Collection接口方法

1、添加 add(Object obj)addAll(Collection coll)2、获取有效元素的个数 int size()在这里插入代码片3、清空集合 void clear()4、是否是空集合 boolean isEmpty()5、是否包含某个元素 boolean contains(Object obj)&#xff1a;是通过元素的equals方法来判断是否是否同一个…

java核心面试_Java核心面试问题

java核心面试问&#xff1a;如果main方法被声明为私有该怎么办&#xff1f; 回答&#xff1a; 该程序可以正确编译&#xff0c;但在运行时会显示“ Main方法不公开”。 信息。 问&#xff1a;在Java中按引用传递和按值传递是什么意思&#xff1f; 回答&#xff1a; 通过引用…

oracle sql条件语句,谁能介绍下Oraclesql之条件语句?

一IF。。THENIFconditionTHENstatements1;statements2;。。。。ENDIF;二IF。。THEN。。。ELSEIFconditionTHENstatements1;statements2;。 。。。ELSEstatements1;statements2;。。。。ENDIF;三IF。。THEN。。ELSIFIFcondition1THENstatement1;ELSIFcondition2THENstatement2;…

Java集合(3)--Iterator迭代器

Iterator对象称为迭代器(设计模式的一种)&#xff0c;主要用于遍历 Collection 集合中的元素。Collection接口继承了java.lang.Iterable接口&#xff0c;该接口有一个iterator()方法&#xff0c;那么所有实现了Collection接口的集合类都有一个iterator()方法&#xff0c;用以返…

oracle 中文脚本,ORACLE常用脚本

--创建表空间Create tablespace BRANCH datafile D:\tablespace\BRANCH.dbf size 500M autoextend on maxsize unlimited;--查询YS所拥有的表空间select distinct(tablespace_name) from dba_segments where ownerYS;--删除用户drop user ys cascade&#xff1b;--删除表空间及…

Java集合(4)--List接口及其实现类ArrayList、LinkedList和Vector

文章目录List接口概述List接口常用方法ArrayList实现类LinkedList实现类Vector实现类List接口概述 List集合类中元素有序、且可重复&#xff0c;集合中的每个元素都有其对应的顺序索引 List容器中的元素都对应一个整数型的序号记载其在容器中的位置&#xff0c;可以根据 序号…

java hadoop_单元测试Java Hadoop作业

java hadoop在我以前的文章中&#xff0c;我展示了如何设置一个完整的基于Maven的项目&#xff0c;以用Java创建Hadoop作业。 当然并没有完成&#xff0c;因为它缺少单元测试部分。 在这篇文章中&#xff0c;我将展示如何将MapReduce单元测试添加到我之前开始的项目中。 对于单…

软件连接oracle失败怎么办,【编程开发工具】navicat连接oracle失败怎么办

Navicat连接oracle数据库时连接失败&#xff0c;出现ORA-28547错误。原因&#xff1a;navicat Primium版本的OCi和本地数据库的OCI版本不一致。解决方法&#xff1a;1、把navicat Primium版本自带oci.dll替换本地Oracle安装路径里的oci.dll。我的本地navicat Primium版本自带oc…

Java集合(5)--Set接口及其实现类HashSet、LinkedHashSet和TreeSet

文章目录Set接口概述HashSet实现类LinkedHashSet实现类TreeSet实现类Set接口概述 1、Set接口是Collection的子接口&#xff0c;set接口没有定义额外的方法&#xff0c;使用的都是Collection接口中的方法。 2、Set 集合不允许包含相同的元素&#xff0c;如果试把两个相同的元素…

php设置超链接,怎么给一个PHP密码访问页面加超链接

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼$password "1234"; // 这里是密码$p "";if(isset($_COOKIE["isview"]) and $_COOKIE["isview"] $password){$isview true;}else{if(isset($_POST["pwd"])){if($_POST["…

Java集合(6)--Map接口

文章目录Map接口概述Map结构的理解Map接口常用方法Map接口概述 Map与Collection并列存在&#xff0c;用于保存具有映射关系的数据:key-value Map中的 key 和 value 都可以是任何引用类型的数据 常用String类作为Map的“键”。key 和 value 之间存在单向一对一关系&#xff0…

php+js表单验证数字,.validate表单验证js

$("#signupForm").validate({rules: {name: {required: true},id:{required:true校验类型:}},messages: {name: {required: "请输入姓名"},id{required: 必填校验类型:}}})name可以填入div里的idrequired 设置必填校验类型取值描述requiredtrue|false必填字…

java低延迟_像Java这样的C ++具有低延迟

java低延迟总览 以前&#xff0c;我写过一篇有关Java之类的C的文章。 这是我以前遇到的术语。 但是&#xff0c;经过思考&#xff0c;我认为像Java这样的C 是一个更好的术语&#xff0c;因为您仍在使用OOP惯例&#xff08;不是C惯例&#xff09;&#xff0c;但是您需要投入更多…