为什么Java中的以下方法不正确?

Fra*_*ank 1 java switch-statement

当我输入以下方法并用Java编译时,我得到了"错误:无法访问的语句",为什么?

  String getRankChar(int rank,boolean isFront)
  {
    switch (rank)
    {
      case 0 : return isFront?"<":">";break;
      case 1 : return isFront?"[":"]";break;
      case 2 : return isFront?"[":"]";break;
      case 3 : return isFront?"(":")";break;
      case 4 : return isFront?"(":")";break;
      default : return " ";break;
    }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 10

break在每个return声明后都有一个声明.所有这些break陈述都无法达到,正是因为你在每个陈述之前都回来了.

根据JLS 第14.21节:

如果由于无法访问语句而无法执行语句,则会发生编译时错误.

和:

[...]如果S之前的语句可以正常完成,则非空交换块中的每个其他语句S都是可到达的.

...

break,continue,return,或throw语句无法正常完成.

return语句无法正常完成,因此该break语句无法访问(对于您的每个案例).

只需删除break语句即可.

  • @MartijnCourteaux:我确实有JLS的书签.这有助于:) (3认同)