如何使用lambda将以下JavaScript示例转换为Java 8中的相应代码。我正在尝试获得Java 8 lambda。
编写示例。如何在Java中编写立即函数调用?提供的JavaScript示例
// js
var isFlag = true,
name = (function() {
if (isFlag) return "A";
else return "B";
})();
console.log(name);
//outputs: A
我已经尝试在Java 8中编写它,但是语法或者某些东西是错误的。请参阅下面的代码。
// LambdaTest.java
class LambdaTest {
public LambdaTest() {
boolean isFlag = true;
String name =() -> { //I know this is wrong. It is not an IIFE. But how to write one?
if (isFlag) return "A";
else return "B";
};
System.out.println(name);
}
public static void main(String... args) {
LambdaTest lt = new LambdaTest();
}
}
// outputs:
// LambdaTest.java:4: error: incompatible types: String is not a functional interface
// String name =() -> {
// ^
// 1 error
谢谢。
斯图尔特·马克斯的答案是这样的JavaScript的最好的字面翻译成Java 8,但我不明白你为什么想这样做。人们通常在JavaScript中使用IIFE的原因是因为该语言缺乏恰当的词汇范围界定,这是Java所具有的。 –
“我不明白你为什么要这么做”:没有什么特别的,只是想知道是否有可能。 – boring