Closures/Value capture: Difference between revisions
Content added Content deleted
(Added an alternative Java 8+ solution) |
|||
Line 559: | Line 559: | ||
System.out.println(foo.get()); // prints "9" |
System.out.println(foo.get()); // prints "9" |
||
} |
} |
||
}</lang> |
|||
Alternative implementation that also {{works with|Java|8+}} |
|||
<lang java>import java.util.List; |
|||
import java.util.function.IntSupplier; |
|||
import java.util.stream.IntStream; |
|||
import static java.util.stream.Collectors.toList; |
|||
public interface ValueCapture { |
|||
public static void main(String... arguments) { |
|||
List<IntSupplier> closures = IntStream.rangeClosed(0, 10) |
|||
.<IntSupplier>mapToObj(i -> () -> i * i) |
|||
.collect(toList()) |
|||
; |
|||
IntSupplier closure = closures.get(3); |
|||
System.out.println(closure.getAsInt()); // prints "9" |
|||
} |
|||
}</lang> |
}</lang> |
||