使用泛型的 OptaPlanner 解决方案继承导致错误
OptaPlanner solution inheritance with generics causes error
我有一个抽象的通用 "Foo" 解决方案 class,我的特定实现继承了它。此 class 是通用的,允许实施 class 定义其特定的 PlanningEntity,它扩展了 "Bar"
这会阻塞 optaplanner,它会吐出如下错误:
未按预期克隆解决方案属性(列表)。 FieldAccessingSolutionCloner 无法识别 属性 的字段,可能是因为其字段名称不同。
我尝试用特定的实现 class 替换 "EntityType" 并且一切似乎都有效。但是,我试图提取通用功能以减少维护,这使我无法提取所有共性。
我也尝试过梳理 OptaPlanner 文档。我找不到这样的例子。
@PlanningSolution
public abstract class Foo <EntityType extends Bar> implements Solution<HardMediumSoftScore>
{
protected HardMediumSoftScore score;
protected ArrayList<EntityType> list = new ArrayList<>();
@PlanningEntityCollectionProperty
public ArrayList<EntityType> getList()
{
return this.list;
}
@Override
public HardMediumSoftScore getScore()
{
return this.score;
}
public void setScore(HardMediumSoftScore score)
{
this.score = score;
}
}
我希望能够在没有 optaplanner 抛出错误的情况下继承。
是否设置了 optaplanner 来处理泛型/继承?我正在使用 6.5,是否有更新的版本可以更好地支持它?
在该字段上添加 @DeepPlanningClone
注释。
此外,从 implements Solution
迁移到 @PlanningSolution
,请参阅 optaplanner.org 上的 升级方法 。
我有一个抽象的通用 "Foo" 解决方案 class,我的特定实现继承了它。此 class 是通用的,允许实施 class 定义其特定的 PlanningEntity,它扩展了 "Bar"
这会阻塞 optaplanner,它会吐出如下错误:
未按预期克隆解决方案属性(列表)。 FieldAccessingSolutionCloner 无法识别 属性 的字段,可能是因为其字段名称不同。
我尝试用特定的实现 class 替换 "EntityType" 并且一切似乎都有效。但是,我试图提取通用功能以减少维护,这使我无法提取所有共性。
我也尝试过梳理 OptaPlanner 文档。我找不到这样的例子。
@PlanningSolution
public abstract class Foo <EntityType extends Bar> implements Solution<HardMediumSoftScore>
{
protected HardMediumSoftScore score;
protected ArrayList<EntityType> list = new ArrayList<>();
@PlanningEntityCollectionProperty
public ArrayList<EntityType> getList()
{
return this.list;
}
@Override
public HardMediumSoftScore getScore()
{
return this.score;
}
public void setScore(HardMediumSoftScore score)
{
this.score = score;
}
}
我希望能够在没有 optaplanner 抛出错误的情况下继承。
是否设置了 optaplanner 来处理泛型/继承?我正在使用 6.5,是否有更新的版本可以更好地支持它?
在该字段上添加 @DeepPlanningClone
注释。
此外,从 implements Solution
迁移到 @PlanningSolution
,请参阅 optaplanner.org 上的 升级方法 。