groovy: преобразовать список реализации интерфейса в карту с помощью compileStatic
Я просто новичок в groovy.
@Service
@CompileStatic
@Slf4j
class JourneyExecutionService {
@Autowired
List<DecisionEngineService> engineList;
Map<String, DecisionEngineService> engineMap;
void init(){
engineMap = engineList.collectEntries {[it.getIndex(), it]}
engineMap = engineList.stream().collect(Collectors.toMap(DecisionEngineService.getIndex, Functions.identity()))
}
Компиляция показывает оба оператора в
init
сбой функции из-за ошибки:
Cannot assign 'Map<Object, Object>' to 'List<String, DecisionEngineService>'
и
Cannot resolve symbol 'getIndex'
Второй оператор в стиле потока Java.
Интерфейс интерфейса похож на
interface DecisionEngineService {
String getIndex()
}
Может ли кто-нибудь помочь исправить проблему с компиляцией? Спасибо
1 ответ
Достаточно явно указать карту:
Map<String, DecisionEngineService> engineMap;
void init(){
engineMap = (Map<String, DecisionEngineService>)engineList.collectEntries {[it.index, it]}
}