package com.insightfullogic.java8.examples.chapter2; import org.junit.Test; import javax.swing.*; import java.text.DateFormat; import java.util.Date; import java.util.Locale; import java.util.function.Function; import java.util.function.Predicate; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertTrue; public class LambdaExercises { @Test public void _1a() { assertTrue("Shown in the next chapter", true); } @Test public void _1b() { // If you were to model each operation on a calculator as a function. Function<Double, Double> negate = (x) -> -1 * x; Function<Double, Double> square = (x) -> x * x; Function<Double, Double> percent = (x) -> 100 * x; } @Test public void _1c() { Function<Integer, Integer> one = x -> x + 1; // 2 isn't Function<Integer, Boolean> three = x -> x == 1; } @Test public void _2a() { assertTrue("ThreadLocal.withInitial", true); } @Test public void _2b() { ThreadLocal<DateFormat> threadSafeFormatter = ThreadLocal.withInitial(() -> DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.UK)); DateFormat formatter = threadSafeFormatter.get(); assertEquals("01-Jan-1970", formatter.format(new Date(0))); } @Test public void _3a() { // yes Runnable helloWorld = () -> System.out.println("hello world"); } @Test public void _3b() { // Yes JButton button = new JButton(); button.addActionListener(event -> System.out.println(event.getActionCommand())); } @Test public void _3c() { // No // check(x -> x > 5); } private boolean check(Predicate<Integer> predicate) { System.out.println("wat?"); return true; } interface IntPred { boolean test(Integer value); } private boolean check(IntPred predicate) { return true; } }