java虚拟内存扩展

我一直关注Java 8 Lambda表达式项目的发展已经有一段时间了,我对其当前的进展状态感到非常兴奋。 我发现的最新“易于理解”的演示文稿是这样的:
http://blogs.oracle.com/briangoetz/resource/devoxx-lang-lib-vm-co-evol.pdf

现在,作为API设计师,我对虚拟扩展方法的概念特别感兴趣,并且我想知道是否也考虑引入“最终”扩展方法而不是“默认”扩展方法。 例如:

interface A {void a();void b() default { System.out.println("b"); };void c() final { System.out.println("c"); };}

当实现上述接口A时,…

  • 还必须实现a()
  • 可以实现/重写b()
  • 无法覆盖c()

优点:

  • API设计人员可以更轻松地创建方便的方法,而不必冒“非法”覆盖默认实现的风险冒用客户代码。 这是“决赛”的主要目的之一。
  • Lambda表达式不必仅限于纯“功能接口”(单方法接口),因为如果功能接口也具有任何数量的最终扩展方法,则其仍将是“功能”。 例如,如果b()被删除或b()也被最终确定,则上述接口A将成为功能接口。
  • 扩展方法将具有与常规方法相同的更多功能,而常规方法也可以是最终方法。 我想对于反射API和JVM来说 ,这是一个加号。
  • 无论如何,JVM都会进行修改以支持扩展方法。 Java 8的动力也可以用于此功能,即现在正是考虑这一点的合适时机

缺点:

  • 在“钻石接口继承 ”的情况下,一个类可以继承多个冲突的最终方法实现。 这可能会导致现有代码中出现新的编译错误。 我想缺乏向后兼容性是最大的缺点。

与多重继承本身一样,谨慎的API设计人员可以在使用最终扩展方法时进一步改善其API,而不太谨慎的API设计人员可能会破坏客户端代码。 但是这个
以前的“ final”用法也是这种情况,因此我认为最终扩展方法将是对Java 8的很好补充。

请在此处查看完整的邮件和lambda-dev邮件列表中的后续邮件:

http://mail.openjdk.java.net/pipermail/lambda-dev/2011-December/004426.html

参考:来自 Java的JCG合作伙伴 Lukas Eder的Java 8虚拟扩展方法 ,位于JAVA,SQL和JOOQ博客上。

相关文章 :

  • Java Lambda语法替代
  • Java SE 7、8、9 –推动Java前进
  • Java 7功能概述
  • 在Java 7中处理文件
  • 具有Java 7中自动资源管理功能的GC
  • Java 7:尝试资源

翻译自: https://www.javacodegeeks.com/2011/12/java-8-virtual-extension-methods.html

java虚拟内存扩展

java虚拟内存扩展_Java 8虚拟扩展方法相关推荐

  1. java tostring 库_java重寫toString()方法

    toString()方法是Object類的方法,調用toString()會返回對象的描述信息. 1)為什么重寫toString()方法呢? 如果不重寫,直接調用Object類的toString()方法 ...

  2. java 二分查找_Java数组之Arrays方法

    Java数组之Arrays方法,拉勾IT课小编为大家分析,JAVA数组的一些方法,提升开发水平,增强技术开发水平,不断提升个人的技术能力,在对于java开发领域,很多人都从基础做起. 1. 数组的工具 ...

  3. java集合示例_Java集合的addAll()方法和示例

    集合类addAll()方法addAll()方法在java.lang包中可用. addAll()方法用于将所有给定元素(ele)放入给定集合(co). addAll()方法是一个静态方法,可以使用类名进 ...

  4. java parsefloat 误差_Java Float类parseFloat()方法与示例

    Float类parseFloat()方法parseFloat()方法在java.lang包中可用. parseFloat()方法用于返回与给定String表示形式相对应的float值,换句话说,我们可 ...

  5. java getmethod类_Java Class类 getMethod()方法及示例

    Class类getMethod()方法getMethod()方法在java.lang包中可用. getMethod()方法用于返回Method对象,这些对象指示该类的给定公共方法或由此Class对象表 ...

  6. java newinstance 包_Java Class类 newInstance()方法及示例

    Class类newInstance()方法newInstance()方法在java.lang包中可用. newInstance()方法用于创建此Class对象表示的类的新实例. newInstance ...

  7. JAVA扩展_Java使用的扩展

    1.JVM的内存模型 堆存放的是对象, 栈存放的是局部变量和对象的地址 2.单例设计模式 2.1.设计模式 设计模式是在软件工程实践过程中,程序员们总结出的良好的编程方法.使用设计模式能够增加系统的健 ...

  8. java的可执行文件_java生成可执行文件的方法总结

    第一种:在jbuilder中: 首先你要保证Run菜单-->Run     Project能顺利运行 然后Wizards菜单-->Native     Executable     Bui ...

  9. java返回子类_java – 从超类型方法返回子类类型

    public abstract class BaseClass> { T method1(){ return getThis(); } public abstract T getThis(); ...

最新文章

  1. RCNN 目标识别基本原理
  2. python上下文管理器
  3. 微信小程序 条形加载读取进度 切换音频进度。简单实现(自定义音频界面实现)
  4. 剖析简易计算器带你入门微信小程序开发
  5. 速达软件启示录——记中国一代ERP性价比之王的没落
  6. 大学计算机基础实训13,东南大学《大学计算机基础》实验13EXCEL图表制作.pdf
  7. 5 steps to autotools GNU diction
  8. SpringMVC细节(下)
  9. VeiwPager、Gallery、ViewFlipper区别
  10. 设置手机最小宽度为1000,无限重启怎么办
  11. 声纹识别(一)——简介
  12. RT-Thread学习1-tcp_modbus
  13. Android混合开发(二)——JSBridge传值注意点
  14. 技术科普丨解密无处不在的EMC干扰
  15. linux下搭建smba文件服务器
  16. 云队友丨人生的管理,就是目标的管理——管理工具大盘点
  17. 语言-英语翻译(edx-datascientist 1.5-1.8)
  18. 3Dmax 通过wrl生成地形
  19. 基于自注意力的生成对抗归因网络的交通流缺失数据修复
  20. 半波对称振子方向图_求一个半波对称振子天线的CST仿真

热门文章

  1. JDK环境变量配置(一次性成功)
  2. 使用JDBCTemplate实现与Spring结合,方法公用 ——Spring配置(applicationContext.xml)
  3. Web开发静态资源处理---SpringBoot
  4. 蓝桥杯JAVA省赛2013-----B------4(黄金连分数)
  5. springboot创建项目 编写dao serviece 和controller 持久层用mybatis
  6. php中时间轴,PHP时间轴函数
  7. 高性能mysql_事务及4种隔离级别
  8. LNCS用户写作指南【 Springer Computer Science Proceedings 】
  9. docker 镜像选择_为什么选择Docker?
  10. hibernate自定义_如何自定义Hibernate脏检查机制