1、Lambda表达式的使用位置
1)、带有单一抽象方法的接口-Runnable、Callable、Comparable
2)、方法接受声明于java.util.function包内的接口 -Predict、Function、Consumer、Supplier
2、lambda表达式和方法引用
lambda 表达式内可以使用方法引用,仅当该方法不修改 lambda表达式提供的参数。
若对参数有任何修改,则不能使用方法引用,需要完整的键入lambda表达式
3、lambda表达式内部引用资源
lambda内部可以使用静态、非静态和局部变量,这称为lambda内的变量捕获
4、lambda表达式也成闭包
lambda表达式在java中又称为闭包或匿名函数。
5、lambda表达式的编辑方式。
lambda方法在编译器内部被编译成私有方法,并派发invokedynamic字节码指令来进行调用。可以使用JDK中的javap工具来反编译class文件。使用javap -p或javap -c -v 命令来看一看lambda表达式生成的字节码。
private static java.lang.Object lambda$0(java.lang.String)
6、lambda表达式的限制
lambda表达式有个限制,只能引用final或final局部变量,不能在lambda内部修改定义在域外的变量。
另外,只是访问而不作修改是可以的。