2015-12-23 15 views
11

Próbuję używać lambd i strumieni w java, ale jestem całkiem nowy. mam ten błąd w IntelliJ „typ docelowej konwersji lambda musi być interfejs”, gdy staram się wyrażenie lambdaJava "docelowy typ konwersji lambda musi być interfejsem"

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

Czy robię coś źle?

Odpowiedz

14

Podejrzewam, że tylko wnioski typu Java nie są dość sprytne. Spróbuj

.map(p -> (Callable<SomeClass>)() -> p.funct()) 
2

Stream#map() to metoda typed, więc można jednoznacznie określić typ:

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

lub neater, korzystania odniesienie metoda:

.<Callable<SomeClass>>map(p -> p::funct) 
Powiązane problemy