使用List<Optional<PersoonFast>>
(其中PersoonFast
是一个正确的类)作为@ValueRangeProvider
,我得到以下异常:
Exception in thread "main" java.lang.IllegalArgumentException: The entityClass (class nl.smartinstall.titania.solver.Bezetting) has a PlanningVariable annotated property (persoon) that refers to a ValueRangeProvider annotated member (field private java.util.List nl.smartinstall.titania.solver.PlanningDefault.personen) that returns a parameterized Collection with an unsupported type arguments (java.util.Optional<nl.smartinstall.titania.solver.PersoonFast>).
Optaplanner版本6.3.0.Final接受这种结构并且工作正常,版本6.4.0.Final抛出异常。任何人都可以解释为什么抛出异常?有解决方法吗?
答案 0 :(得分:0)
我在本地复制了它,a confirmed bug并修正为7.0.0.Beta1
。
话虽如此(OptaPlanner应该支持泛型类型作为计划值类) - 我建议不要使用Optional
作为计划值类,因为IntelliJ的这个警告:
报告java.util.Optional,java.util.OptionalDouble的任何用法, java.util.OptionalInt,java.util.OptionalLong或 com.google.common.base.Optional作为字段或类型的类型 参数。可选项旨在提供有限的机制 库方法返回类型需要有明确的方法 代表“没有结果”。使用类型为java.util.Optional的字段是 如果类需要Serializable,也会有问题 java.util.Optional不是。