提示四十四:优先使用标准的函数式接口。。
- 有了lambda之后,模板方法(Template Method)模式就没有吸引力了,现代的方法是提供一个接收函数对象的静态工厂或者构造函数来达到相同的效果。
-
只要有能满足需求的标准函数接口,就不应该再构建新的接口。 以下是6个基本接口:
- 不要用带包装类型的基础函数接口代替基本函数接口,会因为不断地拆箱装箱带来性能问题。
- 当一个函数式接口满足以下一点或多点情况下,可以自己编写并用注解
@FunctionalInterface
标记:- 通用,并可从描述性名称中受益。
- 有与其关联的强约定.
- 受益于自定义的默认方法。
- 不要给同一个方法提供函数式接口在同一个参数位置的重载(有可能会引起二义性)。
我之前就使用过函数式接口。但是用的也不是特别多,如果这个接口比较复杂,无法用名称表达意义或者比较通用,还是会自己新建一个接口来实现。而且简单的Function、Predicate之类用的多,复杂的用的少。很多时候还是非常方便的。