java - Java - 带括号的开关标签
问题描述
我发现括号可以在开关标签中使用,例如:
switch(id) {
case (CONSTANT):
case (1):
// Do action
break;
}
但是为什么Java在这种情况下允许括号,有用例吗?因为我不能使用||
或,
使用多个,例如
case (CONSTANT||1):
case (CONSTANT,1):
那么为什么允许这种语法,我在JLS中没有找到:
SwitchLabel: case ConstantExpression : case EnumConstantName : default : EnumConstantName: Identifier
解决方案
好吧,ConstantExpression可以包含括号:
常量表达式是表示原始类型值或字符串的表达式,它不会突然完成并且仅使用以下内容组成:
...
带括号的表达式(第 15.8.5 节),其包含的表达式是常量表达式。
...
因此,由于在 之后允许任何常量表达式(其类型为 char、byte、short、int、Character、Byte、Short、Integer、String 或枚举类型)case
,因此允许使用括号。
推荐阅读
- powershell - Powershell:从创建 x 天的多个文件夹中复制文件,同时保持文件夹结构
- ethereum - 测试可靠性时的麻烦
- mysql - 如何在 mysql 查询中 tSUM AS 列?
- django - django 重定向到另一个带有上下文的视图
- excel - 另存为值(不含公式、宏、密码)
- python - 如果行为空 Tkinter,则从树视图中求和值
- powerquery - 将列中给出的表格作为文本引用
- ios - Xcode 10 上的 SiriKit 自定义意图链接错误
- azure-cognitive-search - Azure 搜索简单查询语法的通配符语法
- javascript - Javascript值不变