gpt4 book ai didi

java - 如何使方法参数评估变得懒惰?

转载 作者:行者123 更新时间:2023-12-01 14:07:13 50 4
gpt4 key购买 nike

我的代码中有一个调试日志语句,我将代价高昂的方法调用的结果传递给该语句。

log.debug("Data - {}", obj.costlyMethodCall());

现在,即使调试日志被禁用,obj.coSTLyMethodCall() 将始终被评估为作为方法参数传递。

缓解这种情况的一种方法是明确检查是否启用了调试日志记录

if (log.isDebugEnabled()) {
log.debug("Data - {}", obj.costlyMethodCall());
}

但这会降低代码的可读性。

这里有没有更好的方法来使 obj.coSTLyMethodCall() 的调用变得懒惰或有条件?

最佳答案

通常这可以通过让一个方法接受类似于 Supplier 而不是具体的 Object 的方法来解决,这样您就可以传入类似

的东西
log.debug("Data - {}", () -> obj.costlyMethodCall());

其中 log.debug 类似于

public void debug(String message, Supplier<Object> supplier) {
Object value = supplier.get(); // costlyMethodCall is only called here
// ...
}

关于java - 如何使方法参数评估变得懒惰?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63168584/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com