当前位置: 首页 > 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.lryc.cn/news/593527.html

相关文章:

  • 嵌入式学习-PyTorch(8)-day24
  • Ubuntu20.04 samba配置
  • 读书笔记:最好使用C++转型操作符
  • UE5制作小地图
  • CSS篇——第二章 六十五项关键技能(下篇)
  • Django3 - Web前端开发基础 HTML、CSS和JavaScript
  • 【C语言进阶】题目练习(3)
  • 【RK3576】【Android14】摄像头MIPI开发调试
  • Android Auto 即将推出新功能
  • 7月19日日记
  • NJU 凸优化导论(9) 对偶(II)KKT条件+变形重构
  • react+antd+表格拖拽排序以及上移、下移、移到顶部、移到底部
  • Git仓库使用
  • 网络原理——TCP
  • string【下】- 内功修炼(搓底层)
  • 零基础 “入坑” Java--- 十二、抽象类和接口
  • LibreTv在线观影项目部署开箱即用
  • QT窗口(5)-对话框
  • MySQL基础教程
  • 变频器实习Day10
  • 06-人机共生:Prompt之外的思考
  • VRRP-虚拟路由冗余协议
  • Spring AI 项目实战(十九):Spring Boot + AI + Vue3 + OSS + DashScope 构建多模态视觉理解平台(附完整源码)
  • 【HarmonyOS】Ability Kit - Stage模型
  • java: DDD using sql server 2019 or Oracle21c
  • 【嵌入式电机控制#16】电流环(三):过采样提高采集精度看门狗监测总线电压
  • C++类和对象(一)基础内容讲解
  • 【项目分享】动手做一个TypeC转TTL模块(附带原理图)
  • Spring MVC @RequestParam注解全解析
  • 数据库第四次作业