0

以一种相当松散的方式,这个问题是从我之前的问题开始的。这里的上下文是构建配置了 Phonegap CLI 的 Android 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语句内部,同一个类中的私有doSave方法不知何故变得不可见?

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

4

1 回答 1

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

您的break声明无法访问。

您应该删除该语句以及return false;同样无法访问的最终语句。

于 2016-05-02T07:52:18.250 回答