拥抱Lambda,让Java编码更安全优雅:feilong工具库4.5.2版本正式发布
各位开发者朋友,大家好!
我们非常高兴地宣布,feilong工具库4.5.2版本现已正式发布!
🎯 始终如一的使命:让您从大量重复的底层代码中解脱,大幅提升开发效率,使您的代码更加简练、易写、易读、易于维护。
本次版本的核心主题是 “全面拥抱Lambda表达式”,旨在提供更符合现代Java风格、更类型安全的API体验。
🚀 核心更新详解与实战示例
1. ✨ 重磅升级:全面支持Lambda表达式
为了让集合和映射操作更安全、更优雅,我们为feilong-core模块新增了大量基于Function和Predicate的新API,并弃用(@Deprecated)了相应的基于属性名字符串反射的旧方法。
📌 示例1:类型安全的分组操作
旧的写法(存在拼写错误风险,已弃用):
// 存在风险:`city` 拼写错误编译器不会报错Map<String, List<User>> groupByCityOld = CollectionsUtil.group(userList, "city");
新的推荐写法(编译期类型安全):
// 使用Lambda,享受IDE的自动补全和编译检查Map<String, List<User>> groupByCity = GroupUtil.groupBy(userList, User::getCity);
// 更强大:支持结合Predicate进行条件过滤Map<String, List<User>> activeUsersByCity = GroupUtil.groupBy(
userList,
User::getCity,
User::isActive // 新增的过滤条件参数
);
📌 示例2:获取对象属性的唯一值集合
List<User> userList = ...; // 您的用户列表// ✅ 新方式:通过Lambda安全地提取所有不重复的城市Set<String> uniqueCities = CollectionsUtil.getPropertyValueSet(userList, User::getCity);
// 结果可能是:["北京", "上海", "广州"]
📌 示例3:使用Lambda精准查找集合元素
查找第一个ID为1024的用户:
// 新方法:一行代码,意图清晰User targetUser = CollectionsUtil.find(userList, User::getId, 1024L);
if (targetUser != null) {
System.out.println("找到用户: " + targetUser.getName());
}
2. 🆕 新增实用工具方法
📌 示例4:从平行列表快速构建Map
将动态配置的键列表和值列表快速合并:
List<String> configKeys = Arrays.asList("app.name", "app.version");
List<Object> configValues = Arrays.asList("feilong", "4.5.2");
Map<String, Object> configMap = newHashMap();
MapUtil.putAllFromList(configMap, configKeys, configValues);
// 结果:{app.name=feilong, app.version=4.5.2}
📌 示例5:忽略大小写的Map取值
处理HTTP头、配置项时非常实用:
Map<String, String> headers = newHashMap();
headers.put("Authorization", "Bearer token123");
// 传统方式会因大小写不匹配而返回nullString auth1 = headers.get("AUTHORIZATION"); // null
// ✅ 新方法:无视键的大小写String auth2 = MapUtil.getCaseInsensitive(headers, "AUTHORIZATION"); // "Bearer token123"
3. 🤖 增强:Markdown辅助工具
现在,生成用于报告或消息推送的Markdown表格变得极其简单。
📌 示例6:一键生成数据表格
List<User> userList = ...;
List<String> header = Arrays.asList("ID", "姓名", "城市");
// 定义每列如何从User对象取值List<Function<User, ?>> columnMappers = Arrays.asList(
User::getId,
User::getName,
User::getCity
);
String markdownTable = MarkdownHelper.createTable(header, userList, columnMappers);
// 直接得到格式规整的Markdown表格代码
同时,新增了MarkdownHelper.font方法,方便封装字体样式。
4. 🐛 关键问题修复
SeparatorToCamelCaseJavaIdentifierTransformer 在转换标准 Java 属性名时会将正常java属性名字变为小写的问题,标识为@Deprecated
新增ToCamelCaseJavaIdentifierTransformer 确保了 JSON 字段名转换的准确性。
5. 📣 重要API弃用通知
为了推动代码库的现代化,我们将以下基于字符串反射的旧方法标记为 @Deprecated,建议尽快迁移:
-
CollectionsUtil.group(Iterable, String)
-
CollectionsUtil.groupOne(Iterable, String)
-
及其相关重载方法
迁移路径:请统一使用新的、功能更强大的 GroupUtil.groupBy(...) 系列方法。
6. ⬆️ 构建与依赖更新
🔧 如何获取与使用
Maven 依赖配置:
<dependency>
<groupId>com.github.ifeilong</groupId>
<artifactId>feilong</artifactId>
<version>4.5.2</version>
</dependency>
Gradle 依赖配置:
com.github.ifeilong:feilong:4.5.2
📖 官方完整文档:https://feilong.gitbook.io/feilong-docs
💎 总结与升级建议
feilong 4.5.2 是一个专注于提升开发者体验和推动代码现代化的重要版本。它不仅修复了问题,更重要的是通过全面引入Lambda支持,让工具库的API跃升到一个更安全、更优雅的新阶段。
我们强烈建议所有用户升级,并借此机会,将项目中仍在使用的、基于字符串反射的旧API,逐步替换为新的Lambda表达式API。这不仅是版本的更新,更是您项目代码向更健壮、更可维护方向迈进的一步。
如果在升级或使用过程中遇到任何问题,或有新的功能想法,欢迎通过 https://github.com/ifeilong/feilong/issues 与我们交流。
让Java开发更简便,我们一直在努力。
发布日期:2026年5月17日