如何使用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