Java 8 最佳技巧

即使是在函数式接口的lambda 表达式中:

针对 Lambda 表达式进行设计

我认为lambda表达式有点像 泛型 – 泛型,我们经常使用它们 (例如, 给  List<> 添加类型信息 ),但不常见的是我们把一个方法或类泛型化  (如:  Person<T> )。同样的, 它就像我们使用通过lambdas包装的 Streams API,但对我们来说更罕见的是创建一个需要  lambda 表达式参数的方法。

IntelliJ IDEA 可以帮助你引入一个函数化的参数

这里让你可以使用 Lambda 表达式而非对象来 创建一个参数 。这个功能的好处在于其建议使用一个已有的  函数接口 来匹配这个规范。

这个将引导我们

使用已有的函数接口

当开发者越来越熟悉 Java 8 代码时,我们会知道使用例如 Supplier 和  Consumer 这样的接口会发生什么,但是单独再创建一个 ErrorMessageCreator 会让我们很诧异并且很浪费时间。你可以翻阅  function package 来查看系统本身已经给我们准备了什么。

为函数接口添加 @FunctionalInterface 注解

如果你真的需要创建自己的函数接口,那么就需要用这个 @FunctionalInterface 注解。这个注解似乎没多大用处,但是 IntelliJ IDEA 会在接口不满足这个注解要求的情况下予以提示。例如你没有指定要继承的方法: