Java switch 语句中的方法范围

Method scope inside Java switch statement

这个问题是从我的 以一种相当松散的方式提出来的。这里的上下文是构建 Android 配置了 Phonegap CLI 的 APK,通过 build-extras.gradle 使用 Java 7。这是我的代码

public boolean execute(String action, JSONArray data, 
CallbackContext cbc) throws JSONException 
{
 Context ctxt = cordova.getActivity().getApplicationContext();
 // return doSave(data,cbc,ctxt);
 //the above compiles correctly 
 //doSave is a private method in the same class 
 switch(action)
 {
  case "save":return doSave(data,cbc,ctxt);break;
  //the compiler complains about an `unreachable statement`
  //other case statements ommitted for clarity
  default:cbc.error("Unknown action: "  + action);return false;
 }
 return false;
 //without this return the compiler is upset.
}

我在理解这里的两个问题时遇到一些困难

  1. 据我所知,即使没有最后一个 return,由于 switch...default 子句,我已经定义了一条清晰的执行路径,所以我不明白为什么它需要 return在那里声明
  2. 所以在 switch 语句中,同一个 class 中的私有 doSave 方法不知何故变得不可见了?

在我只做了 JS 和 PHP 的很长一段时间后,我将回到 Java。但是,我一次完成了大量 Delphi 编码,因此我很欣赏 Java 编译器强加的严谨性。在这种情况下,尽管在我看来它有点过分。还是我误解了什么?

return doSave(data,cbc,ctxt);break;

您的 break 语句无法访问。

您应该删除该语句,以及最后的 return false; 语句,后者也是无法访问的。