扫码阅读
手机扫码阅读
Groovy closure 与Java function转换
408 2024-04-13
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
文章来源:
FunTester
扫码关注公众号
项目中Java与Groovy的混合编程及兼容性问题解决
在项目开发过程中,原本的逻辑是使用Java编写框架和工具类,而Groovy则用于编写脚本。然而,随着时间的推移,Groovy相对Java的优势逐渐凸显,导致开发者在使用上产生了混淆。特别是在Java的function和Groovy的closure之间存在兼容性问题。
Java function具有许多不同的实现类,根据返回值和参数个数进行区分,并且有许多具体的返回和参数类型的实现类。虽然实现逻辑并不复杂,但实现类众多。相反,Groovy的closure则简洁得多,一个实现即可满足所有需求,并且比Java有更广泛的使用场景。
由于Java function和Groovy closure并不完全兼容,混合编程时常遇到两者转换的问题。为了解决这一问题,开发了一个转换类,将Java的function转换为Groovy的closure。
package com.funtester.utils
import java.util.function.Consumer
import java.util.function.Function
import java.util.function.Predicate
import java.util.function.Supplier
/** * 处理Java与Groovy不兼容的问题 **/
class JToG {
static Closure toClosure(Supplier supplier) {
return {
supplier.get()
}
}
static Closure toClosure(Function function) {
return {
def t -> function.apply(t)
}
}
static Closure toClosure(Predicate predicate) {
return {
def t -> predicate.test(t)
}
}
static Closure toClusure(Consumer consumer) {
return {
def t -> consumer.accept(t)
}
}
}
在演示中,使用了一个Java function,并通过日志记录了其运行结果。随后,使用JToG类的toClosure方法将该function转换为closure,并记录了转换后的结果。演示也包括了Groovy本身实现的功能,最终通过控制台输出证实了转换和功能的成功。
FuntTester原创专题推荐
- 接口功能测试专题
- 性能测试专题
- Groovy专题
- Java、Groovy、Go、Python
- 单测&白盒
- FunTester社群风采
- 测试理论鸡汤
- FunTester视频专题
- 案例分享:方案、BUG、爬虫
- UI自动化专题
- 测试工具专题
想要了解更多内容?
文章来源:
FunTester
扫码关注公众号
FunTester的其他文章
Redis API——Set功能实践与性能测试【Go版】
之前说要写个 Go 语言版本的 Redis 操作 API 和性能测试
ForkJoinPool实践
最近在看一本15年出版的《Java并发编程的艺术》一书?
基于代码的自动化和无代码自动化
在之前的文章AI如何影响测试行业中提到了随着更先进的技术进入由AI/ML支持的连续测试领域,组织尤其是测试从业人员常常正在争论哪种更好,是通过编程语言完成自动化测试还要采用无代码测试解决方案呢?
Groovy def关键字妙用
在之前的文章和视频中,我分享过Groovy语法中def关键?
Kafka性能测试初探
Kafka是一种高性能的分布式消息系统。
加入社区微信群
与行业大咖零距离交流学习
软件研发质量管理体系建设
白皮书上线