💡
原文约300字/词,阅读约需1分钟。
📝
内容提要
Lambda 表达式只能赋值给函数式接口,不能赋值给非函数式类型。编译器通过上下文推断目标类型,使同一表达式可以表示不同的接口。方法引用同样依赖目标类型进行推断,增强了类型的明确性。
🎯
关键要点
- Lambda 表达式只能赋值给函数式接口,不能赋值给非函数式类型。
- 编译器通过上下文推断目标类型,使同一表达式可以表示不同的接口。
- 目标类型(Target Type)允许推断 lambda 表达式的类型,并识别同一 lambda 表达式可以代表不同的接口。
- 方法引用同样依赖目标类型进行推断,增强了类型的明确性。
- 方法引用的类型推断比 lambda 表达式更强,因为类型更加明确。
- 允许在兼容的函数式接口之间进行转换。
❓
延伸问答
什么是 Lambda 表达式的目标类型?
目标类型是编译器根据上下文推断的类型,允许推断 lambda 表达式的类型。
Lambda 表达式可以赋值给哪些类型?
Lambda 表达式只能赋值给函数式接口,不能赋值给非函数式类型。
方法引用与 Lambda 表达式有什么区别?
方法引用的类型推断比 Lambda 表达式更强,因为类型更加明确。
如何通过上下文推断 Lambda 表达式的类型?
编译器通过上下文推断目标类型,使同一表达式可以表示不同的接口。
可以给同一个 Lambda 表达式赋值给不同的接口吗?
是的,同一 Lambda 表达式可以代表不同的函数式接口。
Lambda 表达式和方法引用的类型推断有什么共同点?
两者都依赖目标类型进行推断,以增强类型的明确性。
➡️