首页 > 解决方案 > OptaPlanner,为什么调试时没有打断点的例子

问题描述

OptaPlanner 新手,想在 Eclipse 中调试示例任务分配来学习。发现只有在UI相关代码调用代码时才会打断点,比如

org.optaplanner.examples.taskassigning.domain.Affinity(int durationMultiplier)
org.optaplanner.examples.taskassigning.domain.TaskAssigningSolution.getEmployeeList()

当在以下位置设置断点时:

org.optaplanner.examples.taskassigning.domain.TaskAssigningSolution.setEmployeeList(List<Employee> employeeList)

它不会被击中。我的问题是,为什么没有命中断点?断点如何被击中?

标签: javaoptaplanner

解决方案


像 TaskAssigningSolution 这样的解决方案正在计划通过对字段的反射进行克隆(请参阅文档了解这是什么)。见FieldAccessingSolutionCloner。您可以编写自己的解决方案克隆器来避免这种行为(但是正确编写很容易出错)。

我们有一个 RFE 运行来支持诸如 accessFieldsThroughGetterSetters=true 之类的东西,以便对 JDK 17 更加友好,这将迫使 OptaPlanner 永远不要对非公共字段使用字段访问。


推荐阅读