Optaplanner 缺少无参数#countDistinct 方法重载
Optaplanner missing a no-args #countDistinct method overload
我刚开始使用 Optaplanner,并尝试从文档 (https://docs.optaplanner.org/7.37.0.Final/optaplanner-docs/html_single/index.html#_collecting_countdistinct) 中重新创建以下示例:
private Constraint roomCount(ConstraintFactory factory) {
return factory.from(Talk.class)
.groupBy(Talk::getRoom, countDistinct())
.penalize("roomCount",
HardSoftScore.ONE_SOFT,
(room, count) -> ...);
}
... 但是 ConstraintCollectors class 中没有无参数 #countDistinct()
方法重载。
只有方法重载分别接受 Function
/BiFunction
/TriFunction
/QuadFunction
。
我是否导入了错误的 class,或者是否存在未记录的签名更改?
好消息,这看起来像是文档中的一个疏忽。你想做的事情是最容易实现的:
.groupBy(Talk::getRoom, countDistinct(Function.identity()))
可以将无参数重载添加到 API,这是我刚才展示的语法糖。有时间我会look into it
Wrt。您关于未记录的签名更改的问题 - 不,那不会发生。 API 在 OptaPlanner 的主要版本之间保持严格的向后兼容——我们实际上在构建时使用 Revapi 来为我们强制执行。您所指出的很可能只是文档审查过程中的疏忽。
感谢您花时间指出这一点。
我刚开始使用 Optaplanner,并尝试从文档 (https://docs.optaplanner.org/7.37.0.Final/optaplanner-docs/html_single/index.html#_collecting_countdistinct) 中重新创建以下示例:
private Constraint roomCount(ConstraintFactory factory) {
return factory.from(Talk.class)
.groupBy(Talk::getRoom, countDistinct())
.penalize("roomCount",
HardSoftScore.ONE_SOFT,
(room, count) -> ...);
}
... 但是 ConstraintCollectors class 中没有无参数 #countDistinct()
方法重载。
只有方法重载分别接受 Function
/BiFunction
/TriFunction
/QuadFunction
。
我是否导入了错误的 class,或者是否存在未记录的签名更改?
好消息,这看起来像是文档中的一个疏忽。你想做的事情是最容易实现的:
.groupBy(Talk::getRoom, countDistinct(Function.identity()))
可以将无参数重载添加到 API,这是我刚才展示的语法糖。有时间我会look into it
Wrt。您关于未记录的签名更改的问题 - 不,那不会发生。 API 在 OptaPlanner 的主要版本之间保持严格的向后兼容——我们实际上在构建时使用 Revapi 来为我们强制执行。您所指出的很可能只是文档审查过程中的疏忽。
感谢您花时间指出这一点。