
即使是在函数式接口的lambda 表达式中:
针对 Lambda 表达式进行设计
我认为lambda表达式有点像 泛型 – 泛型,我们经常使用它们 (例如, 给 List<>
添加类型信息 ),但不常见的是我们把一个方法或类泛型化 (如: Person<T>
)。同样的, 它就像我们使用通过lambdas包装的 Streams API,但对我们来说更罕见的是创建一个需要 lambda 表达式参数的方法。
IntelliJ IDEA 可以帮助你引入一个函数化的参数
这里让你可以使用 Lambda 表达式而非对象来 创建一个参数 。这个功能的好处在于其建议使用一个已有的 函数接口 来匹配这个规范。
这个将引导我们
使用已有的函数接口
当开发者越来越熟悉 Java 8 代码时,我们会知道使用例如 Supplier
和 Consumer 这样的接口会发生什么,但是单独再创建一个
ErrorMessageCreator
会让我们很诧异并且很浪费时间。你可以翻阅 function package 来查看系统本身已经给我们准备了什么。
为函数接口添加 @FunctionalInterface 注解
如果你真的需要创建自己的函数接口,那么就需要用这个 @FunctionalInterface 注解。这个注解似乎没多大用处,但是 IntelliJ IDEA 会在接口不满足这个注解要求的情况下予以提示。例如你没有指定要继承的方法: