Dav*_*nco 8 java standards label java-8
如果我们查看Java标准 §14.7,我们会看到语句可能有标签前缀,例如:
LabeledStatement:
标识符:声明
理论上,标签应该能够标记任何后续声明.因此,例如,以下编译:
public class Test {
public static void main(String[] args) {
hello:
return;
}
}
Run Code Online (Sandbox Code Playgroud)
直觉上,这也编译:
public class Test {
int i;
public static void main(String[] args) {
Test t = new Test();
label:
t.i = 2;
}
}
Run Code Online (Sandbox Code Playgroud)
但下列情况不能编译:
public class Test {
public static void main(String[] args) {
oops:
int k = 3;
}
}
Run Code Online (Sandbox Code Playgroud)
即使这样做(注意范围括号):
public class Test {
public static void main(String[] args) {
oops:
{
int k = 3;
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以问题取决于声明是否是陈述.根据标准(和在线文档):
除了表达式语句之外,还有另外两种语句:声明语句和控制流语句.声明语句声明一个变量.
我在OSX和Windows上都注意到Java 7和8中的这种行为.这是一个错误还是我误解了标准?
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |