箭头操作符如何在java 8中内部工作?

wou*_*non 5 java java-8

我知道箭头的左侧有参数,箭头的右侧是参数所在的函数.但是,我想知道java 8如何映射左侧和右侧并转换为函数.那里发生了什么,我在哪里可以找到这些信息?

Pet*_*rey 7

当你有一个->javac编译器添加一个静态方法与代码的内容.它还向类添加动态调用方信息,以便JVM可以将lambda实现的接口映射到参数和返回类型.JVM在运行时生成代码以将接口绑定到生成的方法.

与lambdas和匿名类的不同之处在于,隐含变量只需要有效地最终(因为本来可以是最终的)并且复制成员变量,即它不保留对this外部类的引用.

它可以区分Runnable,Callable<void>即使两者都没有参数.有关详细信息,请访问http://vanillajava.blogspot.com/2014/09/lambdas-and-side-effects.html

  • 由匿名内部类捕获的本地只需要有效地最终,而不是明确声明为final.这与lambdas类似,是Java 8中以前版本的一种放松.Lambdas还将捕获封闭的实例,但前提是需要捕获它.但是,你是正确的,非捕获lambda不会捕获封闭的实例,而AIC即使它可能是不必要的. (3认同)