【问题标题】:Backwards compatibility of lambda expressions?lambda 表达式的向后兼容性?
【发布时间】:2015-02-12 18:07:56
【问题描述】:

Netbeans 总是建议我应该使用 Lambda 表达式,而且我知道 lambda 是新事物。所以我想知道我是否将代码转换为使用 lambda 表达式,如果我将其导出为 jar 并将其发送给其他人以及那些没有安装最新 Java 的人,它会起作用吗?如果不是,什么时候会发生他们运行它?

在制作学校项目时,我正在发送 netbeans 项目,并且有可能测试我的代码的项目没有最新版本。你认为我应该使用 lambda 表达式吗?

我确实喜欢更简洁的代码,但我希望它也能在任何地方工作。

【问题讨论】:

  • 您必须在 jvm 的目标版本上与二进制文件的接收者达成一致,然后您才能使用 vm 支持的任何内容。 (请注意,您可以设置为该目标 vm 进行编译,在这种情况下,您的 ide 首先不会显示警告)
  • 如果你用 JDK 8 编译你的类并且你使用 Java 8 的特性,比如 lambda 表达式,那么只有当其他人也在使用 Java 8 时它才会起作用。他们将无法使用你的如果他们使用较旧的 Java 版本,则为类。

标签: java netbeans lambda java-8


【解决方案1】:

如果您在学校使用它,这意味着您的老师可能也有 Java 8。如果您觉得 lambda expressions 可以让您的代码更短,请随意使用。

如果您让 Netbeans 8 将其转换为 lambda 表达式,您将得到类似 submitButton.addActionListener(e -> {doStuff();}) 的内容。这是functionally equivalente -> {doStuff();} 的字面意思是“让我成为具有 e 函数的类的对象,它与参数类型 ActionEvent 匹配,并且具有主体 doStuff。”

Lambda 表达式是 Java 8 中一个非常强大(而且很酷)的functional programming API。

【讨论】:

  • 当我参加计算机科学课程时,我的 PC 上有最新的 Java 和 Netbeans,但我的老师和其他学校机器没有,所以我不得不恢复到老式语法。
  • 它在某些次要方面在功能上并不等效(例如new 保证创建一个新对象,而 lambda 可以创建一个新对象或返回一个现有对象),这些在大多数情况下并不重要。
  • @newacct 所以就像Strings,基本上。
猜你喜欢
  • 1970-01-01
  • 2020-10-14
  • 2018-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多