首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >stream-core实现枚举校验

stream-core实现枚举校验

作者头像
阿超
发布2022-10-28 14:53:57
发布2022-10-28 14:53:57
2340
举报
文章被收录于专栏:快乐阿超快乐阿超

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

引入依赖:

代码语言:javascript
复制
<!-- 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>

编写代码:

代码语言:javascript
复制
@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列举选项,拼接为字符串

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档