当前位置: 首页 > news >正文

枚举类高级用法

package com.midea.logistics.idata.domain.enums;import java.util.Arrays;
import java.util.List;public enum UnitTypeEnum {WEIGHT(10, "重量单位", Arrays.asList("g", "kg", "t", "mg", "lb", "oz", "斤", "两")),VOLUME(20, "体积单位", Arrays.asList("m³", "L", "mL", "cm³", "ft³", "gal-US", "gal-UK")),LENGTH(30, "长度单位", Arrays.asList("m", "km", "cm", "mm", "μm", "nm", "in", "ft", "yd", "mile")),AREA(40, "面积单位", Arrays.asList("m²", "km²", "ha", "cm²", "ft²", "亩"));private final int code;private final String name;private final List<String> units;UnitTypeEnum(int code, String name, List<String> units) {this.code = code;this.name = name;this.units = units;}public static UnitTypeEnum fromCode(int code) {return Arrays.stream(values()).filter(t -> t.code == code).findFirst().orElseThrow(() -> new IllegalArgumentException(IdataErrorCodeEnum.DATA_BASE_UNIT_TYPE_UNSUPPORTED.getMsg()));}// Getter 方法public int getCode() { return code; }public String getName() { return name; }public List<String> getUnits() { return units; }
}

这段代码定义了一个名为 UnitTypeEnum 的 Java 枚举类,用于表示不同类型的单位及其对应的符号。它提供了对重量、体积、长度和面积单位的支持,并且允许通过单位类型代码来获取对应的枚举实例。

类概述

  • 包名: com.midea.logistics.idata.domain.enums
  • 功能: 定义了四种基本的单位类型(重量、体积、长度、面积),每种类型包含一个或多个具体的单位符号。
  • 异常处理: 如果尝试使用无效的单位类型代码获取枚举实例,则会抛出 IllegalArgumentException 异常。

成员变量

每个枚举实例包含三个成员变量:

  • code: 整型值,代表该单位类型的唯一标识符。
  • name: 字符串,描述该单位类型的名称。
  • units: 字符串列表,包含属于该单位类型的所有具体单位符号。

构造函数

UnitTypeEnum(int code, String name, List<String> units) {this.code = code;this.name = name;this.units = units;
}

构造函数用于初始化枚举实例,设置其 codenameunits 属性。

静态方法

fromCode(int code)
public static UnitTypeEnum fromCode(int code) {return Arrays.stream(values()).filter(t -> t.code == code).findFirst().orElseThrow(() -> new IllegalArgumentException(IdataErrorCodeEnum.DATA_BASE_UNIT_TYPE_UNSUPPORTED.getMsg()));
}

此方法接受一个整数参数 code,并返回与之匹配的 UnitTypeEnum 实例。如果找不到匹配的枚举实例,则抛出 IllegalArgumentException 异常,提示不支持的单位类型。

Getter 方法

为每个成员变量提供相应的 getter 方法,以便外部可以访问这些私有成员变量。

  • getCode(): 返回单位类型的代码。
  • getName(): 返回单位类型的名称。
  • getUnits(): 返回属于该单位类型的具体单位符号列表。

枚举实例

定义了四个枚举实例,分别对应四种不同的单位类型:

  1. WEIGHT (重量单位):

    • code: 10
    • name: “重量单位”
    • units: 包含 “g”, “kg”, “t”, “mg”, “lb”, “oz”, “斤”, “两” 等常见重量单位符号。
  2. VOLUME (体积单位):

    • code: 20
    • name: “体积单位”
    • units: 包含 “m³”, “L”, “mL”, “cm³”, “ft³”, “gal-US”, “gal-UK” 等常见体积单位符号。
  3. LENGTH (长度单位):

    • code: 30
    • name: “长度单位”
    • units: 包含 “m”, “km”, “cm”, “mm”, “μm”, “nm”, “in”, “ft”, “yd”, “mile” 等常见长度单位符号。
  4. AREA (面积单位):

    • code: 40
    • name: “面积单位”
    • units: 包含 “m²”, “km²”, “ha”, “cm²”, “ft²”, “亩” 等常见面积单位符号。

示例用法

假设你需要根据单位类型代码 20 获取对应的体积单位类型及所有相关单位符号,你可以这样做:

UnitTypeEnum volumeType = UnitTypeEnum.fromCode(20);
System.out.println("单位类型名称: " + volumeType.getName());
System.out.println("单位类型下的所有单位符号: " + volumeType.getUnits());

这将输出:

单位类型名称: 体积单位
单位类型下的所有单位符号: [m³, L, mL, cm³, ft³, gal-US, gal-UK]

如果传入一个不存在的代码,比如 50,则会抛出异常:

UnitTypeEnum unknownType = UnitTypeEnum.fromCode(50); // 抛出 IllegalArgumentException

总结

  • UnitTypeEnum 提供了一种方便的方式来管理和查询不同类型的单位及其符号。
  • 通过静态方法 fromCode 可以轻松地根据单位类型代码找到对应的枚举实例。
  • 每个枚举实例包含了该类型单位的详细信息,如名称和具体的单位符号列表。
http://www.dtcms.com/a/287564.html

相关文章:

  • 实验-链路聚合
  • Java多线程基础详解:从实现到线程安全
  • 面向运维智能的可扩展多智能体AI系统设计
  • Node.js:EventEmitter、Buffer
  • Nestjs框架: RxJS 核心方法实践与错误处理详解
  • 数据结构:字符串(Strings)
  • 图解系统-小林coding笔记
  • 从零入门:云迁移原理详解与华为Rainbow实战指南
  • Linux进程通信——共享内存:System V 进程间通信的极速方案
  • FreeRTOS学习笔记之软件定时器
  • C语言菜鸟入门·浅析strdup和strcpy的区别
  • 1.初始化
  • 【电脑】声卡的基础知识
  • CTF misc之数字取证
  • 我做的基础服务项目,是如何实现 API 安全与限流的(短信、邮件、文件上传、钉钉通知)
  • lazyvim配置
  • 教育科技产品设计:从公司背景到 MVP 方案的落地思路
  • laravel RedisException: Connection refused优雅草PMS项目管理系统报错解决-以及Redis 详细指南-优雅草卓伊凡
  • 传统行业和AIGC的结合及应用
  • Spring AI 项目实战(十八):Spring Boot + AI + Vue3 + OSS + DashScope 实现高效语音识别系统(附完整源码)
  • PyQt5—Qt QDialog 学习笔记
  • 【RK3576】【Android14】SDK源码编译
  • 【RK3576】【Android14】UART开发调试
  • JavaScript基础语法和简单数据结构
  • 【小沐学GIS】基于Rust绘制三维数字地球Earth(Rust、OpenGL、GIS)
  • RPC(Remote Procedure Call,远程过程调用)介绍
  • MySQL数据丢失救援办法
  • 下一场范式革命:Transformer架构≠最终解法
  • 《全栈博客系统的技术肌理:从接口构建到体验升维的实践路径》
  • 美国VPS服务器Linux内核参数调优的实践与验证