以一种相当松散的方式,这个问题是从我之前的问题开始的。这里的上下文是构建配置了 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.
}
我在这里很难理解两个问题
- 据我所知,即使没有最后
return
一个,由于该switch...default
子句,我已经定义了一条清晰的执行路径,所以我不明白为什么它需要一个 return 语句 - 那么在
switch
语句内部,同一个类中的私有doSave
方法不知何故变得不可见?
在我只做了 JS 和 PHP 的很长一段时间之后,我又回到了 Java。但是,我一次完成了大量的 Delphi 编码,因此我很欣赏 Java 编译器所施加的严格性。在这种情况下,尽管在我看来这有点过分了。或者我可能误解了什么?