Java “Le type de conversion lambda visé doit être une interface”

J’essaie d’utiliser des lambdas et des jets en Java, mais je suis assez novice. J’ai eu cette erreur dans IntelliJ “le type cible de conversion lambda doit être une interface” lorsque j’essaie de créer une expression lambda

List<Callable> callList = prgll.stream() .map(p->(()->{return p.funct();} )) <--- Here I get error .collect(Collectors.toList()); 

Est-ce que je fais quelque chose de mal?

Je soupçonne que la déduction de type de Java n’est pas assez intelligente. Essayer

  .map(p -> (Callable) () -> p.funct()) 

Stream#map() est une méthode typée , vous pouvez donc spécifier explicitement le type:

  .>map(p -> () -> p.funct()) 

ou plus propre, utilisez une référence de méthode:

  .>map(p -> p::funct)