Java tutorial
import java.util.Arrays; import java.util.List; import java.util.function.Consumer; public class Main { public static void main(String[] args) { List<Integer> l = Arrays.asList(1, 3, 2, 4); l.forEach(getConsumer(10)); } public static Consumer<Integer> getConsumer(int multiplier) { IntWrapper iWrapper = new IntWrapper(10); Consumer<Integer> lambdaToReturn = x -> { System.out.println(x * iWrapper.getInt() * multiplier); }; iWrapper.incr(); // Even we increment it later, lambda still get 11 // instead of 10 return lambdaToReturn; } } class IntWrapper { private int data; public IntWrapper(int i) { this.data = i; } public String toString() { return this.data + ""; } public void incr() { this.data++; } public int getInt() { return this.data; } }