gpt4 book ai didi

java - 在流口水中使用 LHS 的辅助方法

转载 作者:行者123 更新时间:2023-11-30 07:46:57 25 4
gpt4 key购买 nike

我正在学习流口水并试图了解最佳实践。之间有什么实际区别:

when
$event : Event(Helper.notNull(foo),...)

when
$event : Event(foo != null,...)

假设Helper.notNull是java中的一个静态方法,它只是检查对象是否不为空。

我已经在两个相同的规则和一个匹配所有条件的事件和辅助方法上测试了这一点,并且仅调用了一次辅助方法,因此看起来 drools 能够缓存值。 (我最糟糕的期望是它会急切地评估每条规则)

我觉得使用辅助方法与 native drools 操作可能存在一些细节。

如果你概括我的问题,那么听起来会像:“调用在when子句中返回 boolean 值的助手是否安全?” (例如,如果我使用 Objects.equals(a, b) 而不是写 a == b)

最佳答案

Drools(在 6.x 中)计算 boolean 表达式。简单比较运算符和实现相同比较运算符的方法之间是否存在“实际差异”:两者都会计算出相同的结果,并且简单运算符避免了调用的开销。

您所说的“缓存”是 Drools 尽可能组合相同约束的结果,但不能保证所有此类表达式都可以始终被缓存。

通过简单的比较,编写评估相同结果的方法没有任何好处。 Drools 在必要时为 ==!= 调用 equals

关于java - 在流口水中使用 LHS 的辅助方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33794499/

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