Ответ 1
Я подозреваю, что просто вывод типа Java не достаточно умен. Попробуйте
.map(p -> (Callable<SomeClass>) () -> p.funct())
Я пытаюсь использовать lambdas и streams в java, но я совершенно новичок в этом. Я получил эту ошибку в IntelliJ "целевой тип преобразования лямбда должен быть интерфейсом", когда я пытаюсь сделать лямбда-выражение
List<Callable<SomeClass>> callList = prgll.stream()
.map(p->(()->{return p.funct();} )) <--- Here I get error
.collect(Collectors.toList());
Я что-то делаю неправильно?
Я подозреваю, что просто вывод типа Java не достаточно умен. Попробуйте
.map(p -> (Callable<SomeClass>) () -> p.funct())
Stream#map()
- это typed method, поэтому вы можете явно указать тип:
.<Callable<SomeClass>>map(p -> () -> p.funct())
или более аккуратно, используйте ссылку на метод:
.<Callable<SomeClass>>map(p -> p::funct)