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列举选项,拼接为字符串

相关文章
|
Java
Java8使用stream操作两个list根据某字段匹配再对其中一个list进行赋值
Java8使用stream操作两个list根据某字段匹配再对其中一个list进行赋值
2032 0
|
4月前
|
JSON 人工智能 编译器
Go json 能否解码到一个 interface 类型的值
Go json 能否解码到一个 interface 类型的值
34 1
|
6月前
|
Java
java自定义检查对象属性是否为空
java自定义检查对象属性是否为空
|
Java
java8 stream:检查list集合中是否存在某个值
java8 stream:检查list集合中是否存在某个值
657 0
|
前端开发 Java 数据库连接
Java使用流去除集合中某个字段为空的对象
记录下如何在Java使用流去除集合中某个字段为空的对象
1797 0
Java使用流去除集合中某个字段为空的对象
|
Java
JAVA基础--注释的使用--标识符--数据类型及数据转换
JAVA基础--注释的使用--标识符--数据类型及数据转换
115 0
JAVA基础--注释的使用--标识符--数据类型及数据转换
|
JSON 前端开发 数据格式
.net MVC 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错,字符串的长度超过了为 maxJsonLength 属性设置的值
在.net mvc的controller中,方法返回JsonResult,一般我们这么写: [HttpPost] public JsonResult QueryFeature(string url, string whereClause) { string str=""; return Json(str); }   此时如果str过长,就会报“使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错,字符串的长度超过了为 maxJsonLength 属性设置的值”。
2953 0
|
JSON 安全 Go
Go 中使用 JSON 时,如何区分空字段和未设置字段
Go 中使用 JSON 时,如何区分空字段和未设置字段
628 0
|
Java
Java中同时输入字符串和int类型出错的处理方式
在Java中,如果输入int类型和字符串处理不当会产生错误,例如:如果先输入int类型,在输入字符串类型
314 0