自版本6.4.0.Final以来的IllegalArgumentException

时间:2016-04-29 08:43:49

标签: java optaplanner

使用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&lt;nl.smartinstall.titania.solver.PersoonFast>).

Optaplanner版本6.3.0.Final接受这种结构并且工作正常,版本6.4.0.Final抛出异常。任何人都可以解释为什么抛出异常?有解决方法吗?

1 个答案:

答案 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不是。