枚举类高级用法

java 复制代码
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: 字符串列表,包含属于该单位类型的所有具体单位符号。

构造函数

java 复制代码
UnitTypeEnum(int code, String name, List<String> units) {
    this.code = code;
    this.name = name;
    this.units = units;
}

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

静态方法

fromCode(int code)
java 复制代码
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 获取对应的体积单位类型及所有相关单位符号,你可以这样做:

java 复制代码
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,则会抛出异常:

java 复制代码
UnitTypeEnum unknownType = UnitTypeEnum.fromCode(50); // 抛出 IllegalArgumentException

总结

  • UnitTypeEnum 提供了一种方便的方式来管理和查询不同类型的单位及其符号。
  • 通过静态方法 fromCode 可以轻松地根据单位类型代码找到对应的枚举实例。
  • 每个枚举实例包含了该类型单位的详细信息,如名称和具体的单位符号列表。
相关推荐
2zcode11 分钟前
项目文档:基于MATLAB最小二乘支持向量机的睡眠分期智能监测系统设计与实现
开发语言·支持向量机·matlab
王维同学12 分钟前
Credential Provider、Filter 与 PLAP 的 CLSID 枚举
c++·windows·安全·注册表
twcc_come16 分钟前
安全策略配置实验报告
开发语言·php
2601_9638701720 分钟前
【计算机毕业设计】基于Spring Boot的社区老年大学课程报名与学习系统的设计与实现
java·spring boot·学习
2601_9638702230 分钟前
基于Python的晋江文学城热门作品数据分析与可视化
开发语言·python·数据分析
llwszx34 分钟前
【Java/Go后端手撸原生Agent(第七篇):Token预算管理 + 滑动窗口上下文裁剪】
java·后端·python·agent开发·上下文工程·上下文裁剪·滑动窗口裁剪
其实防守也摸鱼1 小时前
Kimi K3深度测评:长文本之外的真实力
运维·开发语言·网络·人工智能·python·学习·安全
weixin_BYSJ19871 小时前
springboot3家政平台小程序--附源码00904
java·javascript·spring boot·python·django·flask·php
冻柠檬飞冰走茶2 小时前
PTA基础编程题目集 7-7 12-24小时制(C语言实现)
c语言·开发语言·数据结构·算法
梦幻通灵2 小时前
Java中finally失效的几种情况【持续更新】
java·开发语言