Java基础学习总结(43)——Java8 Lambda揭秘
再了解了Java 8 Lambda的一些基本概念和应用后, 我们会有这样的一个问题: Lambda表达式被编译成了什么?。 这是一个有趣的问题,涉及到JDK的具体的实现。 本文将介绍OpenJDK对Lambda表达式的转换细节, 读者可以了解Java 8 Lambda表达式背景知识。
Brian Goetz是Oracle的Java语言架构师, JSR 335(Lambda Expression)规范的lead, 写了几篇Lambda设计方面的文章, 其中之一就是Translation of Lambda Expressions。 这篇文章介绍了Java 8 Lambda设计时的考虑以及实现方法。
他提到, Lambda表达式可以通过内部类, method handle, dynamic proxy等方式实现, 但是这些方法各有优劣。 真正要实现Lambda表达式, 必须兼顾两个目标: 一是不引入特定策略,以期为将来的优化提供最大的灵活性, 二是保持类文件格式的稳定。 通过Java 7中引入的invokedynamic (JSR 292), 可以很好的兼顾这两个目标。
invokedynamic 在缺乏静态类型信息的情况下可以支持有效的灵活的方法调用。主要是为了日益增长的运行在JVM上的动态类型语言, 如Groovy, JRuby。
Java基础学习总结(43)——Java8 Lambda揭秘相关推荐
- Java基础学习——第十六章 Java8新特性
Java基础学习--第十六章 Java8 新特性 Java8(JDK8.0)较 JDK7.0 有很多变化或者说是优化,比如 interface 里可以有静态方法和默认方法,并且可以有方法体,这一点就颠 ...
- 尚学堂JAVA基础学习笔记_2/2
尚学堂JAVA基础学习笔记_2/2 文章目录 尚学堂JAVA基础学习笔记_2/2 写在前面 第10章 IO技术 1. IO入门 2. IO的API 3. 装饰流 4. IO实战 5. CommonsI ...
- java基础学习-4
Java基础学习-4 static 注意事项 重新认识main方法 继承 小练习 子类到底能继承父类中的哪些内容(第126集)*** 继承过程中成员变量和成员方法的访问特点 小练习 小总结 构造方法的 ...
- java基础学习-6
Java基础学习-6 双列集合 Map的常见API Map的遍历方式 HashMap 小练习 LinkedHashMap TreeMap TreeMap--小练习1 TreeMap--小练习2 Tre ...
- 【Java基础学习笔记】- Day11 - 第四章 引用类型用法总结
Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 4.1 class作为成员变量 4.2 interface作为成 ...
- Java基础学习(9)
Java基础学习 一.常用方法(API) 1.1 Math 1.2 System 1.3 Runtime 1. 4 .object 1.5 Objects 1.6 BigInteger BigInte ...
- Java基础学习——第十章 枚举类注解
Java基础学习--第十章 枚举类&注解 一.枚举类(enum) 1. 枚举类的概念 枚举类:类的对象只有有限个,确定的 线程状态:创建.就绪.运行.阻塞.死亡 当需要定义一组常量时,强烈建议 ...
- Java基础学习(12)
Java基础学习 一.不可变集合 二.Stream流 2.1 Stream流数据添加 2.2 Stream流的中间方法 2.3 Stream终结方法 三. 方法引用 3.1 方法引用的基本概念 3.2 ...
- java基础学习_IO流03_字符流、IO流小结、案例_day21总结
java基础学习_IO流03_字符流.IO流小结.案例_day21总结 ================================================================ ...
- java基础学习整理(一)
java基础学习整理(一) lesson1: D0s命令: 1.回到根目录,>cd \ 2.复制命令行下的内容,右击标记所要复制的内容,这样就已经复制好了,右击粘贴就可以了. 3.查看,设置环境 ...
最新文章
- mysql 开发进阶篇系列 10 锁问题 (使用“索引或间隙锁”的锁冲突)
- Java 结构体之 JavaStruct 使用教程一 初识 JavaStruct
- Redis学习笔记(三)
- 利用iTextSharp组件给PDF文档添加图片水印,文字水印
- maven全局配置文件settings.xml详解
- 一起谈.NET技术,基于CallContextInitializer的WCF扩展导致的严重问题
- wxPython利用pytesser模块实现图片文字识别
- 成功在fedora 13 上安装 了libfetion
- 解决微信浏览器不能自动播放视频
- 时间管理表 - 《周计划表》
- 为什么重复率高的字段不适合作为索引
- 【组队学习】【32期】组队学习内容详情
- linux startx无效_startx命令_Linux startx 命令用法详解:用来启动X Window
- iOS 通讯录-获取联系人属性
- 专注UI——实用技术:模糊搜索
- MongoDB副本集详解与搭建
- ppt中讲演模式在哪里_滚动讲演的过去和现在
- 聊聊AppDelegate解耦
- 矩阵的基本运算(相乘、相加、求逆、转置)
- 最小linux系统启动失败,技术|如何拯救一台GRUB 2启动失败的Linux电脑
热门文章
- python3 md5_Python3.2 --md5
- 计算机代码如何使用方法,电脑定时自动关机代码怎么样使用
- python安装you—get_使用Python下载工具you-get下载媒体文件
- python 绝对路径找不到文件_python获取文件绝对路径解决找不到文件句柄的问题实例(readConfig.py)V1.2...
- scrapy python下载图片_使用Scrapy自带的ImagesPipeline下载图片,并对其进行分类。
- 闪电邮修改服务器设置,网易闪电邮添加outlook邮箱的方法(图文教程)
- 计算机程序辅助拼货,拼货
- shell脚本发邮件内容html,Shell发送邮件以HTML展示
- c语言程序员算法题库,100个超级经典地C语言算法,程序员必须练习.doc
- go去掉最后一个字符_Go:字符串操作