【发布时间】:2017-05-18 14:57:06
【问题描述】:
Java 8 中有没有一种方法可以同时使用复杂表达式的结果声明和初始化 final 变量?
换句话说,是否可能出现以下情况?
final int x = [capturedVariable] {
switch (capturedVariable) {
case 1: return 42;
case 2: return 84;
default: return 66;
}
};
虽然语法显然是“创造性的”,但我希望意图是明确的。
编辑 1:虽然这个特定示例可以使用三元运算符编写,但它只是一个复杂表达式的示例,我正在寻找一个通用的解决方案。
编辑 2:也许以下是看待这个问题的争议较小的方式:在 Java 8 中同时声明和调用 lambda/闭包的语法是什么?
【问题讨论】:
-
写一个方法?
final int x = someMethod(capturedVariable); -
这当然是一个有效的解决方案,但我正在寻找一种方法来做到这一点,而无需引入一次性功能(这也打破了从上到下的阅读顺序)。
-
您可以轻松写
final int x; { switch (capturedVariable) { case 1: x=42; break; case 2: x=84; break; default: x=66; } }。它比你建议的语法短……
标签: java lambda anonymous-inner-class