栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java 8 Lambda表达式编译成什么?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 8 Lambda表达式编译成什么?

Java 8语言规范的当前草案状态(第15.27.4章)

lambda表达式的值是对具有以下属性的类的实例的引用:

  • 该类实现目标功能接口,如果目标类型是路口类型,则实现该路口的所有其他接口元素。
  • 该类声明一个方法,该方法将覆盖功能接口超类型的抽象方法(以及其超接口的其他某些方法)。
  • 方法的参数类型,返回类型和引发类型由接口的函数类型给出。
  • 该方法的主体具有评估lambda主体(如果是表达式)或执行lambda主体(如果是块)的作用;如果期望结果,则从方法中返回。
  • 该类没有覆盖上面提到的一个或多个接口的其他方法,除了它可以覆盖
    Object
    该类的方法之外。

请注意,除了字节代码应支持上述规范外,JLS没有说明应如何编译代码。

这样,lambda表达式返回的对象

x -> System.out.print(x);

将是遵循上述规则的类的实例。

鉴于您的评论

consumer.getClass()

返回以下类

Example$$Lambda$1/1072591677

似乎它正在生成特定于lambda表达式的类似代理的类。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/486071.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号