Java 8函数式编程2.7 练习_Java 8函数式编程2.7 练习试读-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 编程 > Java 8函数式编程 > 2.7 练习

Java 8函数式编程——2.7 练习

每章最后都附有一组练习,帮助读者实践并巩固本章的知识和新概念。练习答案可在GitHub(https://github.com/RichardWarburton/java-8-Lambdas-exercises)上本书所对应的代码仓库中找到。 1. 请看例2-15 中的Function 函数接口并回答下列问题。 例2-15 Function 函数接口 public interface Function<T, R> { R apply(T t); } a. 请画出该函数接口的图示。 b. 若要编写一个计算器程序,你会使用该接口表示什么样的Lambda 表达式? c. 下列哪些Lambda 表达式有效实现了Function<Long,Long> ? x -> x + 1; (x, y) -> x + 1; x -> x == 1; 2. ThreadLocal Lambda 表达式。Java 有一个ThreadLocal 类,作为容器保存了当前线程里局部变量的值。Java 8 为该类新加了一个工厂方法,接受一个Lambda 表达式,并产生一个新的ThreadLocal 对象,而不用使用继承,语法上更加简洁。 a. 在Javadoc 或集成开发环境(IDE)里找出该方法。 b. DateFormatter 类是非线程安全的。使用构造函数创建一个线程安全的DateFormatter对象,并输出日期,如“01-Jan-1970”。 3. 类型推断规则。下面是将Lambda 表达式作为参数传递给函数的一些例子。javac 能正确推断出Lambda 表达式中参数的类型吗?换句话说,程序能编译吗? a. Runnable helloWorld = () -> System.out.println("hello world"); b. 使用Lambda 表达式实现ActionListener 接口: JButton button = new JButton(); button.addActionListener(event -> System.out.println(event.getActionCommand())); c. 以如下方式重载check 方法后,还能正确推断出check(x -> x > 5) 的类型吗? interface IntPred { boolean test(Integer value); } boolean check(Predicate<Integer> predicate); boolean check(IntPred predicate); 你可能需要查阅Javadoc 或在IDE 里查看方法的参数类型,验证重载是否有效。

展开全文


推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

《Java 8函数式编程》其他试读目录

• 2.1 第一个Lambda表达式
• 2.2 如何辨别Lambda表达式
• 2.3 引用值,而不是变量
• 2.4 函数接口
• 2.5 类型推断
• 2.6 要点回顾
• 2.7 练习 [当前]
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  •