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进行赋值
2009 0
|
1月前
|
Java 编译器
Java“无效的方法声明;需求返回类型”怎解决
要解决Java中的“无效的方法声明;需要返回类型”错误,需为方法指定正确的返回类型。检查方法签名,添加如`void`、`int`、`String`等类型,并确保方法体内正确使用`return`语句。这能帮助Java编译器理解和验证方法的行为。遵守这些规则,可以避免语法错误并确保程序正常运行。
|
6月前
|
存储 JavaScript 前端开发
java9新特性之-String存储结构变更--集合工厂方法-- InputStream 加强--增强的 Stream API讲解
java9新特性之-String存储结构变更--集合工厂方法-- InputStream 加强--增强的 Stream API讲解
75 0
|
Java
java8 stream:检查list集合中是否存在某个值
java8 stream:检查list集合中是否存在某个值
615 0
Java8 新特性 list集合利用stream根据对象得某一属性对集合进行分组,附加8之前分组
Java8 新特性 list集合利用stream根据对象得某一属性对集合进行分组,附加8之前分组
682 4
|
IDE 编译器 API
stream的实用方法和注意事项
相信大家一定都在项目开发中享受过stream带来的便利性和优雅的代码风格。接下来补充几个项目中不常见到但是同样实用的api,同时跟大家一起探讨stream这把双刃剑的另一面。
227 0
stream的实用方法和注意事项
|
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 属性设置的值”。
2935 0
|
Java
Java中同时输入字符串和int类型出错的处理方式
在Java中,如果输入int类型和字符串处理不当会产生错误,例如:如果先输入int类型,在输入字符串类型
308 0
|
前端开发 Java
Java 获取Enum枚举中的值,以列表方式返回
Java 获取Enum枚举中的值,以列表方式返回
1988 0
|
JavaScript 前端开发 Oracle
Java8 新特性:Lambda 表达式、方法和构造器引用、Stream API、新时间与日期API、注解
Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等等。
448 0
Java8 新特性:Lambda 表达式、方法和构造器引用、Stream API、新时间与日期API、注解