我正在尝试使用增强的switch语句初始化两个变量:
int num = //something
boolean val1;
String val2;
val1, val2 = switch(num) {
case 0 -> (true, "zero!");
case 1 -> (true, "one!");
default -> (false, "unknown :/");
}
这可能吗?
Java中没有元组解包。仍然使用switch表达式的快速替代方法可以使用自定义类(在以下示例中使用Pair
):
Pair
简短的回答,不,据我所知,java不支持任何方式的多重分配。一种解决方法是在巫婆中构造一个容器类来存储字符串和布尔值。
示例
Pair<Boolean, String> val = switch (num) {
case 0 -> Pair.of(true, "zero!");
case 1 -> Pair.of(true, "one!");
default -> Pair.of(false, "unknown :/");
};
boolean val1 = val.getLeft();
String val2 = val.getRight();
并返回包含两者的对象。
或者潜在地,您可以使用数组和类型转换,或结构不同的语句。
class Response
{
String message;
bool found;
}
由于您已经在Java-13上,我建议不要使用附加的库来表示元组,而应将
switch(num) {
case 0:
val1 = true;
val2 = "zero!"
break;
case 1:
val1 = true;
val2 = "one!"
break;
default:
val1 = false;
val2 = "unknown :/"
break;
}
(在Java-9中引入)与推断出的局部变量类型Map.entry
的语法糖一起使用。 。
Map.entry