Optaplanner缺少无参数#countDistinct方法重载

问题描述 投票:1回答:1

我只是从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) -> ...);
}

...但是#countDistinct()类中没有无参数的ConstraintCollectors方法重载。只有一种方法重载分别接受Function /BiFunction/TriFunction/ QuadFunction

我是否导入了错误的类,或者是否存在未记录的签名更改?

optaplanner
1个回答
1
投票

很好,看起来像文档中的一个疏忽。您想要做的事情最容易实现,例如:

.groupBy(Talk::getRoom, countDistinct(Functions.identity()))

无参数重载可能会添加到API中,这是我刚刚显示的语法糖。有空的时候我会look into it

Wrt。您关于未记录的签名更改的问题-不,不会发生。该API在OptaPlanner的主要版本之间仍然严格向后兼容-我们实际上在构建时使用Revapi对我们强制执行。您所指出的很可能只是文档审核期间的疏忽。

感谢您抽出宝贵的时间指出这一点。

© www.soinside.com 2019 - 2024. All rights reserved.