stream-core实现枚举校验

简介: stream-core实现枚举校验

同一个美丽而聪慧的人相处,能使人紧张的神经放松,感情变得柔和——巴尔扎尔

引入依赖:

<!-- https://search.maven.org/artifact/io.github.vampireachao/stream-query -->
<dependency>
    <groupId>io.github.vampireachao</groupId>
    <artifactId>stream-core</artifactId>
    <version>1.1.12</version>
</dependency>

编写代码:

@Test
void test() {
    class User {
        public GenderEnum getGender() {
            return null;
        }
    }
    String exceptionMessage = null;
    User user = new User();
    try {
        require(user::getGender);
    } catch (IllegalArgumentException e) {
        exceptionMessage = e.getMessage();
    }
    Assertions.assertEquals("'gender'需要'MALE|FEMALE'其一", exceptionMessage);
}
@SuppressWarnings("unchecked")
public static <T extends Enum<T>> void require(SerSupp<T> enumSupp) {
    LambdaExecutable executable = LambdaHelper.resolve(enumSupp);
    Enum<T>[] enumConstants = ((Class<Enum<T>>) executable.getReturnType()).getEnumConstants();
    Sf.of(enumSupp.get()).require(() -> new IllegalArgumentException(
            "'" + BeanHelper.getPropertyName(executable.getName()) +
                    "'需要'" + Steam.of(enumConstants).map(Enum::name).join("|") + "'其一"));
}

当你使用require(user::getGender)时,如果gendernull,则会抛出异常,并提示:'gender'需要'MALE|FEMALE'其一

这里获取了getGenderlambda方法名称,以及返回值枚举类型,通过遍历枚举的name列举选项,拼接为字符串

相关文章
|
JSON 小程序 前端开发
微信小程序(二十四)微信小程序富文本编辑器editor
{ "component": true, "usingComponents": {} }
346 0
|
算法
【算法专题突破】滑动窗口 - 长度最小的子数组(9)
【算法专题突破】滑动窗口 - 长度最小的子数组(9)
88 0
|
6月前
|
人工智能 自然语言处理 机器人
创新场景丨大模型时代,重塑智能终端新体验
大模型为智能终端带来的变革是全方位的,但挑战也同样显而易见。云侧部署的大模型加端侧应用的大模型是综合平衡性能、成本、功耗、隐私、速度之下的最佳选择。
|
Java API Python
Python 搭建 FastAPI 项目
Python 搭建 FastAPI 项目
175 0
|
缓存 JavaScript 前端开发
首屏性能优化:提升用户体验的秘籍
首屏性能优化:提升用户体验的秘籍
|
Dart JavaScript Shell
在 Flutter 中发出 HTTP 请求的最佳库(2022 年
本文将向您介绍最好的开源软件包列表,这些软件包可以帮助我们在 Flutter 应用程序中发出 HTTP 请求。事不宜迟,让我们探索重要的事情。 Http Pub likes: 3910+ GitHub stars: 735+ License: BSD-3-Clause Written in: Dart Links: Pub page | GitHub repo | Official docs
1769 0
|
Java Maven
使用maven仓库?每次都是自定义,设置稳定maven本地库地址
使用maven仓库?每次都是自定义,设置稳定maven本地库地址
518 0
使用maven仓库?每次都是自定义,设置稳定maven本地库地址
|
存储 运维 Java
Elasticesearch内存详解(九)——内存排查
介绍Elasticesearch内存排查相关
1202 0
|
机器学习/深度学习 传感器 数据采集
【信号处理教程】基于倒谱图判断浊音的基音周期附MATLAB代码
【信号处理教程】基于倒谱图判断浊音的基音周期附MATLAB代码
|
数据安全/隐私保护