なんか思いついた。
import java.util.function.Supplier;
public class Main {
private final String str = ((Supplier<String>) () -> {
System.out.println("str を初期化します!");
return "ほげほげ";
}).get();
public static void main(String... args) {
Main main = new Main();
System.out.println(main.str);
}
}
実行結果
str を初期化します!
ほげほげ
JavaScript と違って、スコープ定義のメリットは存在しない。
インスタンスイニシャライザやコンストラクタを利用することなく、 final なフィールドを個別に初期化できるくらいがメリット?(果たしてメリットと言えるかは微妙)
だいぶトリッキーな気がする。