JAVA8向下兼容JAVA6_编译后的Java 8 lambda表达式向后兼容Java运行时的早期版本吗?...

为了减少由众多匿名类型的实例化引起的混乱,我正在探索利用Java 8 lambda的可能性。

在生产环境中使用Java

8和lambda之前,一个重要的考虑因素是使用lambda表达式的JDK8编译代码是否可以在Java运行时的早期版本上执行。我对JRE6和JRE7作为目标平台特别感兴趣。

一方面,我了解到lambda只是围绕包含一个方法的匿名类的实例化的语法糖。另一方面,我不确定这种等效性是否意味着为每个生成的字节码在除JRE8之外的所有JVM版本中都是相同和/或兼容的。

例如,给定单方法接口:

public interface Action {

public void perform(T argument);

}

以下两个片段在功能上是等效的:

使用lambda:

final Action y = i -> System.out.println(i);

使用匿名类实例:

final Action y = new Action() {

@Override

public void perform(final String i) {

System.out.println(i);

}

};

我的具体问题是两个结构的 语义对 等是否扩展到其 编译表示的对等

。此外,如果它们确实等效编译,这种等效性是否表示可以将lambda表达式的编译形式托管在Java运行时的早期版本中而无需进行修改?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值