08_面向对象高级_枚举

枚举

1. 认识枚举

枚举是一种特殊的类。

public class Test {public static void main(String[] args) {A objX = A.X;System.out.println(objX);  // X}
}enum A {// 注意,枚举类的第一行必须罗列枚举对象的名称X,Y,Z;private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}
}
2. 枚举的特点
  • 枚举类的第一行只能罗列一些名称,这些名称都是常量,并且每个常量记住的都是枚举类的一个对象。
  • 枚举类的构造器都是私有的(写不写都只能是私有的),因此枚举类对外不能创建对象。
  • 枚举都是最终类,不可以被继承。
  • 枚举类中,从第二行开始可以定义类的其他各种成员。
  • 编译器为枚举类新增了几个方法,并且枚举类都是继承 java.lang.Enum 类的,从 enum 类也会继承到一些方法。
public class Test {public static void main(String[] args) {// 1. 枚举类的构造器是私有的,它不能对外创建对象
//      A obj = new A();  // 报错// 2. 枚举类的第一行都是常量(所以可以直接通过"类名.常量名"直接获取),记住的是枚举类的对象A objX = A.X;A objY = A.Y;// 3. 枚举类为我们提供了一些APIA[] all = A.values();  // 获取所有的枚举对象A objZ = A.valueOf("Z");  // 根据枚举的常量名来获得对应的枚举对象System.out.println(objZ.name());  // 输出枚举对象的名称:ZSystem.out.println(objZ.ordinal());  // 输出枚举对象的索引:2}
}enum A {X, Y, Z;
}
3. 抽象枚举(扩展)
public class Test {public static void main(String[] args) {A obj = A.Y;obj.run();  // Jack跑步中...}
}enum A {// 创建对象X、Y的时候,因为run方法是抽象的,所有对象X、Y无法初始化自己的run方法// 因此,我们要调用构造器重写run方法X() {@Overridepublic void run() {}},Y("Jack") {@Overridepublic void run() {System.out.println(getName() + "跑步中...");}};// 抽象的————对象的方法public abstract void run();private String name;// 无参构造器A() {}// 有参构造器A(String name) {this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}
4. 枚举实现单例
public class Test {public static void main(String[] args) {// 通过枚举快速实现单例H obj1 = H.OBJ;H obj2 = H.OBJ;System.out.println(obj1 == obj2);  // true}
}enum H {OBJ;
}
5. 枚举常见的应用场景
  • 用来表示一组信息,然后作为参数进行传输

    (选择定义一个个的常量来表示一组信息,并作为参数传输)

  • 参数值不受约束

    (选择定义枚举表示一组信息,并作为参数传输)

  • 代码可读性好,参数值得到了约束,对使用者更友好,建议使用!

案例展示:

public class Test {// main方法public static void main(String[] args) {check(0);  // 检测到为女性用户,将为您推荐xxx}// check方法public static void check(int gender) {switch (gender) {case Constant.female:System.out.println("检测到为女性用户,将为您推荐xxx");break;case Constant.male:System.out.println("检测到为男性用户,将为您推荐yyy");break;}}
}class Constant {// 常量public static final int female = 0;public static final int male = 1;
}

参照上面的案例,用枚举的方法进行改写,代码如下:

public class Test {// main方法public static void main(String[] args) {check(Constant.male);  // 使用枚举,能够让对方不能乱传参数进来}// check方法public static void check(Constant gender) {switch (gender) {case male:System.out.println("检测到为女性用户,将为您推荐xxx");break;case female:System.out.println("检测到为男性用户,将为您推荐yyy");break;}}
}enum Constant {male, female;
}

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

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

相关文章

在 Linux 和 Windows 系统下查看 CUDA 和 cuDNN 版本的方法,包括使用 nvcc 命令

一直都比较头疼cuda与cudnn版本查看问题,两个系统不一样也不好查看,命令不通用 Linux 查看 CUDA 版本 方法一: nvcc --version或 nvcc -V如果 nvcc 没有安装,那么用方法二。 方法二: 去安装目录下查看&#xff…

ip地址跟wifi有关系吗

​你可能已经听说过IP地址和Wi-Fi这两个词,但你有没有想过它们之间是否有关系呢?在这篇文章中,我们将深入探讨IP地址与Wi-Fi之间的密切联系。从基本概念到应用实例,虎观代理小二二将为您解答这个问题。 首先,让我们来了…

Threejs_08 纹理颜色的调整(颜色空间的设置)

为什么写入的贴图颜色跟实际的颜色有差别呢? 具体为啥我也不知道,总之就是threejs有两个颜色空间 一个是线性的 一个是rgb那种样式的,但是人眼对光照强度的感知并不是线性的,所以threejs的默认属性,到人眼中&#xff…

存储区域网络(SAN)之FC-SAN和IP-SAN的比较

存储区域网络(Storage Area Network,SAN)用于将多个系统连接到存储设备和子系统。 早期FC-SAN: 采用光纤通道(Fibre Channel,FC)技术,通过光纤通道交换机连接存储阵列和服务器主机,建立专用于数据存储的区域网络。 传…

知识表示与知识图谱

目录 前言 一、知识与知识表示的概念 二、知识图谱 总结 🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。 💡本文由Filotimo__✍️原创,首发于CSDN📚。 📣如…

NSS [鹤城杯 2021]Middle magic

NSS [鹤城杯 2021]Middle magic 源码直接给了。 粗略一看&#xff0c;一共三个关卡 先看第一关&#xff1a; if(isset($_GET[aaa]) && strlen($_GET[aaa]) < 20){$aaa preg_replace(/^(.*)level(.*)$/, ${1}<!-- filtered -->${2}, $_GET[aaa]);if(preg_m…

「Verilog学习笔记」输入序列连续的序列检测

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 timescale 1ns/1ns module sequence_detect(input clk,input rst_n,input a,output reg match);reg [7:0] a_tem ; always (posedge clk or negedge rst_n) begin if (~rs…

使用正则表达式匹配HTML标签出现了问题

今天有这样一个需求&#xff1a;需要匹配好多个HTML文件&#xff0c;从中找出所有的标题文字。 正则表达式 这本是一个简单的需求&#xff0c;只需要使用正则表达式进行匹配即可。下列是我们当时所使用的表达式&#xff1a; <[hH][1-6]>.*?<\/[hH][1-6]> 测试…

openfeign整合sentinel出现异常

版本兼容的解决办法&#xff1a;在为userClient注入feign的接口类型时&#xff0c;添加Lazy注解。 Lazy注解是Spring Framework中的一个注解&#xff0c;它通常用于标记Bean的延迟初始化。当一个Bean被标记为Lazy时&#xff0c;Spring容器在启动时不会立即初始化这个Bean&…

【旅游行业】Axure旅游社交平台APP端原型图,攻略门票酒店民宿原型案例

作品概况 页面数量&#xff1a;共 110 页 兼容软件&#xff1a;Axure RP 9/10&#xff0c;不支持低版本 应用领域&#xff1a;旅游平台&#xff0c;酒店住宿 作品申明&#xff1a;页面内容仅用于功能演示&#xff0c;无实际功能 作品特色 本作品为「旅游社交平台」移动端…

​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​

软考-高级-系统架构设计师教程&#xff08;清华第2版&#xff09;【第15章 面向服务架构设计理论与实践&#xff08;P527~554&#xff09;-思维导图】 课本里章节里所有蓝色字体的思维导图

新手买电视盒子哪个好?数码粉实测电视盒子排名

新手们在买电视盒子时面对众多的品牌和机型&#xff0c;往往不知道电视盒子哪个好&#xff0c;我作为资深数码粉&#xff0c;已经买过十来款电视盒子了&#xff0c;近来某数码论坛公布了最新的电视盒子排名&#xff0c;我购入后进行了一周的深度实测&#xff0c;结果如何&#…

CostMap

world/map坐标系、updateOrigin、footprintCostNavigation源码阅读之costmap_2d

希亦ACE和RUUFFY内衣洗衣机选哪个好?内衣洗衣机大对比

这两年&#xff0c;内衣洗衣机算是一种很受欢迎的小家电了&#xff0c;尽管它的体积很小&#xff0c;但是它的作用很大&#xff0c;一键就能启动洗、漂、脱三种自动操作&#xff0c;在提高多功能和性能的同时&#xff0c;也能让我们在洗衣服的时候&#xff0c;解放了我们的手。…

异步事件实现原理

现有编程语言实现异步事件的底层原理主要有两种&#xff1a;事件循环和状态机。 事件循环 事件循环是一种程序执行的模式&#xff0c;通过在单线程中循环监听事件&#xff0c;实现非阻塞IO和异步处理。事件循环的核心是一个事件队列&#xff0c;用于存储待处理的事件。事件可…

【论文解读】CP-SLAM: Collaborative Neural Point-based SLAM System_神经点云协同SLAM系统(上)

目录 1 Abstract 2 Related Work 2.1 单一智能体视觉SLAM&#xff08;Single-agent Visual SLAM&#xff09; 2.2 协同视觉SLAM&#xff08;Collaborative Visual SLAM&#xff09; 2.3 神经隐式表示&#xff08;Neural Implicit Representation&#xff09; 3 Method 3.…

Mac git查看分支以及切换分支

查看本地分支 git branch 查看远程仓库分支 git branch -r 查看本地与远程仓库分支 git branch -a 切换分支 git checkout origin/dev/js

服务注册与实现

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http…

一文讲清楚MySQL常用函数!

全文大约【1268】字&#xff0c;不说废话&#xff0c;只讲可以让你学到技术、明白原理的纯干货&#xff01;本文带有丰富案例及配图视频&#xff0c;让你更好的理解和运用文中的技术概念&#xff0c;并可以给你带来具有足够启迪的思考...... 一. 时间函数 下面给大家总结了My…

美国费米实验室SQMS启动“量子车库”计划!30+顶尖机构积极参与

​11月6日&#xff0c;美国能源部费米国家加速器实验室(SQMS)正式启动了名为“量子车库”的全新旗舰量子研究设施。这个6,000平方英尺的实验室是由超导量子材料与系统中心负责设计和建造&#xff0c;旨在联合国内外的科学界、工业领域和初创企业&#xff0c;共同推动量子信息科…