加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java – SAM类型优化

发布时间:2020-12-15 00:56:18 所属栏目:Java 来源:网络整理
导读:描述 Project Lambda状态的 working document提到了所谓的SAM(单一抽象方法)类型.据我所知,当前的lambda建议不会影响运行时只是编译器,可以实现从lambda表达式到这些类型的自动转换. 我认为在理想情况下,SAM类型的实例可以在内部由函数指针表示.因此,JVM可以
描述 Project Lambda状态的 working document提到了所谓的SAM(单一抽象方法)类型.据我所知,当前的lambda建议不会影响运行时只是编译器,可以实现从lambda表达式到这些类型的自动转换.

我认为在理想情况下,SAM类型的实例可以在内部由函数指针表示.因此,JVM可以避免为这些实例分配内存.

我想知道现代虚拟机是否能够提供这样的优化.

解决方法

@Tamás你可能应该阅读Brian Goetz的这篇邮件列表帖子:

http://mail.openjdk.java.net/pipermail/lambda-dev/2011-August/003877.html

基本上,lambda抽象目前使用对象实现.但是,它被设计为允许lambda的替代实现,这将比类的实例“更小”.

您可以将这种情况视为与自动装箱相似 – 整数被装箱为整数,但具有“较小”的表示(如整数).

目前,lambdas必须被装箱到SAM类型的实例,而b / c JVM目前无法用任何较小的构造来表示lambda.将来,可能会有一个新的JVM标准,其中包含“原始函数”,它可以将lambda表示为除对象之外的其他东西.

因此,为了回答您的问题,您提出的优化类型可能是可能的,但它可能伴随着Java 8之后的“原始函数”而不是特定于实现的特性.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读