Når skal vi bruke Lambda-uttrykk? Hvis en metode har en formell parameter av en funksjonell interfacetype (dvs. typen til parameteren er et interface med bare èn metode) kan vi bruke et lambda-uttrykk som aktuell parameter når metoden kalles. Eks: interface IntPredicate { boolean test( int verdi); } class IntStream { public IntStream filter( IntPredicate p ) { ... } < andre metoder > } Vi kan bruke et Lambda-uttrykk når vi kaller metoden filter: IntStream.of( verdier ).filter( x -> x % 2 == 0 ).... IntPredicate-interfacet blir implementert av Lambda-uttrykket ved at kompilatoren lager et objekt av en anonym klasse og bruker det som aktuell parameter i kallet på filter-metoden : new IntPredicate() { public boolean test( int x ) { return x % 2 == 0; } } Test-metoden blir så brukt til å filtrere strømmen slik at den bare inneholder de elementene som er partall. IntStream-metoden reduce reduserer strømmen til et element ved å bruke en assosiative akkumuleringsfunksjon. En metode-referanse er en forkortet skrivemåte for et lambda-uttrykk: String::toUpperCase er en forkortelse for (String s) -> { return s.toUpperCase();} som kan forøvrig kan skrives som s -> s.s.toUpperCase()