⛳ Java 枚举

news2024/12/22 13:31:05

目录

  • ⛳ 枚举
    • **🎨 例子:使用常量表示线程状态**
    • 🏭 例子:使用枚举表示线程状态
    • 📢 例子:订单状态的枚举

⛳ 枚举

  • 类的对象只有有限个,确定的。 使用场景:

    • 星期: Monday(星期一)、 …、 Sunday(星期天)
    • 性别: Man(男)、 Woman(女)
    • 季节: Spring(春节)…Winter(冬天)
    • 支付方式: Cash(现金)、 WeChatPay(微信)、 Alipay(支付宝)、 BankCard(银行卡)、 CreditCard(信用卡)
    • 就职状态: Busy、 Free、 Vocation、 Dimission
    • 订单状态: Nonpayment(未付款)、 Paid(已付款) 、 Delivered(已发货)、Return(退货)、 Checked(已确认) Fulfilled(已配货)、
    • 线程状态:创建、就绪、运行、阻塞、死亡
  • 当需要定义一组常量时,强烈建议使用枚举类 使用说明:

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

    • values()方法:返回枚举类型的对象数组。该方法可以很方便地遍历所有的枚举值。
    • valueOf(String str):可以把一个字符串转为对应的枚举类对象。要求字符串必须是枚举类对象的“名字”。如不是,会有运行时异常:IllegalArgumentException。
    • toString():返回当前枚举类对象常量的名称

🎨 例子:使用常量表示线程状态

public class StateDem1 {

    public static void main(String[] args) {
        System.out.println(State.WAITING);
    }


    static class State {
        public static final String NEW = "NEW";
        public static final String RUNNABLE = "RUNNABLE";
        public static final String BLOCKED = "BLOCKED";
        public static final String WAITING = "WAITING";
        public static final String TIMED_WAITING = "TIMED_WAITING";
        public static final String TERMINATED = "TERMINATED";
//        public static final String TERMINATED2 = "TERMINATED2";

    }
}

🏭 例子:使用枚举表示线程状态

public class StateDem2 {

    int i;
    static int i1;


    public static void main(String[] args) {

        //获取一个枚举对象
        System.out.println(State.WAITING);
        System.out.println(State.valueOf("BLOCKED"));

        //循环枚举
        State[] states = State.values();
        for (int i = 0; i < states.length; i++) {
            System.out.println(states[i]);
        }
    }


    enum State {
        //一个类State,中有6个这个类的静态对象
        NEW,
        RUNNABLE,
        BLOCKED,
        WAITING,
        TIMED_WAITING,
        TERMINATED;
    }

}

📢 例子:订单状态的枚举

package org.example.$_enum;

import org.junit.Test;

/**
 *   订单状态: Nonpayment(未付款)、 Paid(已付款) 、 Delivered(已发货)、Return(退货)、 Checked(已确认) Fulfilled(已配货)、
 */
public class StateEnum {

    @Test
    public void test01(){
        OrderState[] values = OrderState.values();
        for (int i = 0; i < values.length; i++) {
            System.out.println(values[i] + "-" + values[i].getValue() + "-" + values[i].getCode());
        }
    }

    public enum OrderState {
        //static final OrderState NON_PAYMENT = new OrderState(1, "未付款")
        NON_PAYMENT(1, "未付款"),
        PAID(2, "已付款"),
        DELIVERED(3, "已发货"),
        RETURN(4, "退货"),
        CHECKED(5, "已确认"),
        FULFILLED(6, "已配货");


        private OrderState(int code, String value) {
            this.code = code;
            this.value = value;
        }

        private int code;
        private String value;

        public String getValue() {
            return value;
        }

        public int getCode() {
            return code;
        }
    }

}

结果:

NON_PAYMENT-未付款-1
PAID-已付款-2
DELIVERED-已发货-3
RETURN-退货-4
CHECKED-已确认-5
FULFILLED-已配货-6

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

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

相关文章

ospf 案例

OSPF 基础案例 配置 S1 交换机 [S1]int LoopBack 0 [S1-LoopBack0]ip addr 1.1.1.1 32[S1]vlan batch 20 30 Info: This operation may take a few seconds. Please wait for a moment...done.[S1]int vlanif 20 [S1-Vlanif20]ip addr 192.168.20.1 24 [S1-Vlanif20]int vlani…

新版Android Studio模拟器浮动

&#xff08;水一篇&#xff0c;但其实很多入门同学不知道&#xff09; 安装新版Andorid Studio后会发现模拟器是内嵌在AS中的&#xff0c;如何让她浮动

创建型模式-单例模式

文章目录 一、创建型模式1. 单例设计模式1.1 单例模式的结构1.2 单例模式的实现&#xff08;1&#xff09;饿汉式-方式1&#xff08;静态变量方式&#xff09;&#xff08;2&#xff09;饿汉式-方式2&#xff08;静态代码块方式&#xff09;&#xff08;3&#xff09;懒汉式-方…

lammps拉伸初始应力不为零原因及解决办法

拉伸模拟是研究材料拉伸性能的常用方法。通常情况下&#xff0c;初始应力为零&#xff0c;以获得准确的应力-应变曲线。 然而&#xff0c;在某些情况下&#xff0c;模拟得到的初始应力大于零或者小于零。 &#xff08;1&#xff09;初始应力不为零的原因 根本原因是在拉伸前…

SpringBoot + Docker 实现一次构建到处运行~

一、容器化部署的好处 图片 Docker 作为一种新兴的虚拟化方式&#xff0c;它可以更高效的利用系统资源&#xff0c;不需要进行硬件虚拟以及运行完整操作系统等额外开销。 传统的虚拟机技术启动应用服务往往需要数分钟&#xff0c;而 Docker 容器应用&#xff0c;由于直接运行…

【Linux 网络】网络层协议之IP协议

IP协议 IP协议所处的位置网络层要解决的问题IP协议格式分片与组装网段划分特殊的IP地址IP地址的数量限制私网IP地址和公网IP地址路由 IP协议所处的位置 IP指网际互连协议&#xff0c;Internet Protocol的缩写&#xff0c;是TCP/IP体系中的网络层协议。 网络层要解决的问题 网络…

C++11 新特性 ---- 类成员的快速初始化

一、类成员的快速初始化 1.C98 标准的类成员初始化 ① 初始化类中的静态成员常量("就地声明")&#xff1a; 类声明 : 等号 加初始值 ② 初始化类中的非静态成员变量&#xff1a; 初始化 : 必须在构造函数中进行 #include <iostream> using namespace…

无涯教程-Perl - 格式化

Perl使用称为“formats”的模板来输出内容。要使用Perl的格式函数&#xff0c;必须先定义一种格式&#xff0c;然后才能使用该格式写入格式化的数据。 定义格式 以下是定义Perl格式的语法- format FormatName fieldline value_one, value_two, value_three fieldline value…

vue3中CompositionApi理解与使用

CompositionApi&#xff0c;组合式API&#xff0c;相当于react中hooks&#xff0c;函数式。 优势&#xff1a;1&#xff0c;增加了代码的复用性&#xff08;类似mixin&#xff0c;slot&#xff0c;高阶组件功能&#xff09; 2&#xff0c;代码可读性更好。可以将处理逻辑和视图…

75. 颜色分类

题目链接&#xff1a;力扣 解题思路&#xff1a;因为整个nums数组中只有0&#xff0c;1&#xff0c;2三个数组成。对nums升序排序后&#xff0c;0一定都在数组的最左边&#xff0c;2一定都在数组的最右边&#xff0c;1在数组的中间。那么只需要将0移动到数组的左边&#xff0c;…

西电-印刷电路板(PCB)设计指南0903完整版

PCB设计是以电路原理图为根据,实现电路设计者所需要的功能。 最近我找到一份西安电子科技大学的PCB设计指南的课件,课件内容非常夯实详尽: 分为通用电路篇和高速电路篇,包含了: PCB基础知识 PCB设计步骤和规范 电流路径分析、常见类型PCB设计 传输线与阻抗匹配、信号…

【Linux】【预】配置虚拟机的桥接网卡+nfs

【Linux】【预】配置虚拟机的桥接网卡 1. 配置VM虚拟机的桥接网络2 配置Win10中的设置3.配置Linux中的IP4. 串口连接开发板&#xff0c;配置nfs5 修改网络文件6 验证nfs 是否成功总结 1. 配置VM虚拟机的桥接网络 右击设置&#xff0c;选择添加网络&#xff0c;按照如下顺序操作…

解决Vs Code工具开发时 保存React文件时出现乱码情况

Vs Code工具开发时 保存React文件时出现乱码情况 插件库搜索:JS-CSS-HTML Formatter 把这个插件禁用或者卸载就解决保存时出现乱码的问题了; 如果没有解决,再看下面方案! 出现乱码问题通常是因为文件的编码格式不正确。您可以尝试以下解决方法&#xff1a; 确认文件编码格式&a…

泛型和通配符

目录 1. 什么是泛型 2. 泛型是如何编译的&#xff1f; 3. 泛型的上界 小栗子1&#xff1a; 小栗子2&#xff1a; 4. 泛型方法 5. 通配符 小栗子&#xff1a; 错误的做法和原因&#xff1a; 6. 通配符的上界&#xff08;多用来取数据&#xff09; 7. 通配符的下界&am…

【C#学习笔记】类型转换

文章目录 类型转换字符转数字GetNumericValueConvert.ToInt32隐式转换计算 字符串转数字Parse 或 TryParse 方法 字节数组转整数 as&#xff0c;is强制类型转换isas 用户定义的转换 类型转换 我们简单地将值类型分为5种&#xff1a;整数型&#xff0c;浮点型&#xff0c;布尔型…

Docker环境下MySQL备份恢复工具XtraBackup使用详解 | Spring Cloud 62

一、XtraBackup 简介 Percona XtraBackup是一个开源的MySQL和MariaDB数据库备份工具&#xff0c;它能够创建高性能、一致性的备份&#xff0c;并且对生产环境的影响很小。Percona XtraBackup通过在不停止MySQL服务器的情况下&#xff0c;复制InnoDB存储引擎的数据文件和事务日…

react18之08自定义hook (简单的axios-get、修改浏览器title、localStorage、获取滚动条位置、img转换为base64)

目录 react18之自定义hook ()01&#xff1a;自定义一个 简单的axios hook 发起get请求useHttp.jsx使用useHttp hook效果 02&#xff1a;自定义一个 修改浏览器title hook03&#xff1a;自定义一个 localStorage(获取、存储、移除) hookuseLocalStorage.jsx使用hook效果 04&…

【JVM】 垃圾回收篇——自问自答(1)

Q什么是垃圾&#xff1a; 运行程序中&#xff0c;没用任何指针指向的对象。 Q为什么需要垃圾回收&#xff1f; 内存只分配&#xff0c;不整理回收&#xff0c;迟早会被消耗完。 内存碎片的整理&#xff0c;为新对象腾出空间 没有GC程序无法正常进行。 Q 哪些区域有GC&#…

【C++学习】STL容器——list

目录 一、list的介绍及使用 1.1 list的介绍 1.2 list的使用 1.2.1 list的构造 1.2.2 list iterator的使用 1.2.3 list capacity 1.2.4 list element access 1.2.5 list modifiers 1.2.6 list 迭代器失效 二、list的模拟实现 2.1 模拟实现list 三、list和vector的对比…

On Evaluation of Embodied Navigation Agents 论文阅读

论文信息 题目&#xff1a;On Evaluation of Embodied Navigation Agents 作者&#xff1a;Peter Anderson&#xff0c;Angel Chang 来源&#xff1a;arXiv 时间&#xff1a;2018 Abstract 过去两年&#xff0c;导航方面的创造性工作激增。这种创造性的输出产生了大量有时不…