我知道箭头的左侧有参数,箭头的右侧是参数所在的函数。但是,我想知道java 8如何映射左侧和右侧并转换为函数。那里发生了什么,我在哪里可以找到这些信息?
答案 0 :(得分:7)
当你有一个->
时,javac编译器会添加一个带有代码内容的静态方法。它还向类添加动态调用方信息,以便JVM可以将lambda实现的接口映射到参数和返回类型。 JVM在运行时生成代码以将接口绑定到生成的方法。
与lambdas和匿名类的区别在于,隐含变量只需要有效最终(因为本来可以是最终的)并且成员变量被复制,即它不会保留对this
的引用。外在的。
它可以告诉Runnable
和Callable<void>
之间的区别,即使两者都没有参数。有关详细信息http://vanillajava.blogspot.com/2014/09/lambdas-and-side-effects.html