2016-04-29 2 views
0

Используя List<Optional<PersoonFast>> (где PersoonFast собственный класс), как @ValueRangeProvider, я получаю следующее исключение:IllegalArgumentException начиная с версии 6.4.0.Final

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 принимает эту конструкцию и работу fine, версия 6.4.0.Final выдает исключение. Может ли кто-нибудь объяснить причину исключения? Есть ли обходной путь?

+0

Что такое подпись метода 'Bezetting.getPersoon()' и 'PlanningDefault.getPersonen()'? –

+0

Мне понадобится дополнительная информация, чтобы определить, является ли это ошибкой регрессии или нет. –

+0

Это 'public Optional getPersoon()'. Не существует метода getter 'PlanningDefault.getPersonen()'. Добавление одного ('public List > getPersonen()') и перемещение аннотации из поля в метод приводит к аналогичной ошибке (со ссылкой на метод). – Stevie

ответ

0

Я воспроизвел его локально, это a confirmed bug и исправлено для 7.0.0.Beta1.

Это сказанный (OptaPlanner должны поддерживать общие типы как классы значений планирования) - я совет против использования Optional как класс значения планирования, из-за это предупреждение от IntelliJ:

Reports любых видов использования Java .util.Optional, java.util.OptionalDouble, java.util.OptionalInt, java.util.OptionalLong или com.google.common.base.Optional как тип поля или параметр . Необязательный был разработан для обеспечения ограниченного механизма для типов возвращаемых библиотечных методов , где должен быть четкий способ: представляют «нет результата». Использование поля с типом java.util.Optional также проблематично, если класс должен быть Serializable, который java.util.Optional - нет.

Смежные вопросы