注:这是不是一个重复的Java switch语句:要求常量表达式,但它是恒定的,因为解决该链接已经被应用于此。
在科尔多瓦与应用打字稿我用这个枚举送我的行动=
打字稿
enum PluginActions {
PICK = "PICK",
PICK_MULTIPLE = "PICK_MULTIPLE"
}
我发送到科尔多瓦和在Java中我得到的,作为一个action
在我的方法字符串变量。
@Override
public boolean execute(String action, JSONArray inputs, CallbackContext callbackContext) throws JSONException {
}
在那里,我也有一个枚举。
Java的
enum PickerActions {
PICK, PICK_MULTIPLE
}
我要比较的打字稿PluginActions
VS java的PickerActions
。
使用if
我可以用做:
if (action.equals(PickerActions.PICK.name())) { }
但我挽带开关做到这一点,所以我可以很容易地添加更多操作
switch (action) {
case PickerActions.PICK.name():
JSONObject filters = inputs.optJSONObject(0);
this.chooseFile(filters, callbackContext);
return true;
default:
Log.w(this.LOGGER_TAG, "No function was found for " + action);
return false;
}
但是,我得到一个错误有: error: constant string expression required
有没有在switch语句中使用枚举字符串名称的方法吗?
编辑:
按照@Arnaud建议我铸造这样的枚举值:
final PickerActions pickerAction = FilePickerActions.valueOf(action);
switch (pickerAction ) {
case PickerActions.PICK:
JSONObject filters = inputs.optJSONObject(0);
this.chooseFile(filters, callbackContext);
return true;
default:
Log.w(this.LOGGER_TAG, "No function was found for " + action);
return false;
}
但我得到另一个错误就存在 case PickerAction.Pick
错误:枚举开关盒标签必须是枚举常数的非限定名称
我建议你的Java枚举您使用的字符串值:
private enum PickerActions {
PICK("PICK"),
PICK_MULTIPLE("PICK_MULTIPLE");
private final String value;
PickerActions(final String value) {
this.value = value;
}
@Override
public String toString() {
return value;
}
}
private static boolean test(String test) {
switch (PickerActions.valueOf(test)) {
case PICK:
//
return true;
case PICK_MULTIPLE:
//
return false;
default:
// Log.w(this.LOGGER_TAG, "No function was found for " + test);
return false;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句