前面的课程中,我们学习了如何用异常来返回多个值,用异常处理错误,以及如何使用接口来抽象相似的对象。
在不同的代码之间只需要传递函数而不需要传递字段,例如c语言的qsort
函数接受一个比较器函数指针。Java语言的函数必须依附在类或者对象上,传统的做法分为好几步:
Java8提供了匿名类和函子(functor),这两个语法特性可以不写出第二步的类定义,而直接写出方法体,因此简化了以上的过程。
函子可以作为某个接口的对象实例。
someMethod((arg1)->{
return arg1.ano();
})
接受函子的函数,仍然需要第一步的接口定义。接口定义描述了传入函数的入参和出参,描述了入参和出参才能检查传入函数的类型。
定义接口时,要用到@FunctionalInterface
元注解。