Java 8 Lambdas不起作用,Java 8中的所有其他工作都可以

我发现Java 8现在正式发布。 似乎我需要Eclipse Luna 4.4才能工作。 所以我下载了Luna并安装了它。 我还从我的其他Eclipse导入了所有项目,一切都按预期工作。 当我想尝试Java 8时,我很快发现我需要先安装它。 安装完成后,我设法将JRE 8更改为默认值。

我的问题是:为什么我可以使用新的日期和时间API,但我不能使用新的Lambda表达式?

一些可能有用的信息:

  • 我正在使用Mac
  • 我非常肯定时间API有效(即使是小型Java Doc Box也说它是自1.8以来)

它是否与我没有安装包含Java 8的Eclipse这一事实有关?

首先,你不需要使用Luna – 开普勒有一个function补丁可以正常使用。

其次,Java Compiler对话框的“源兼容性”部分必须是1.8。 否则,即使您被允许使用Java 1.8的function,您也将无法使用语言function。 (它不仅仅是lambdas – 有方法引用,接口中的静态方法,以及默认方法。)这里是看的地方:

Java 1.8编译器设置

您很少想要使用1.8中的库function,但保持源代码/类文件与1.7或更早版本的兼容性,但我想如果您编写需要在各种JRE上运行的代码,它可能会很有用,但您可以拥有一些需要Java 1.8的function实现,并且不会在早期的JRE上使用。