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)