比较字符串使用Java中的开关枚举值

远:

注:这是不是一个重复的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
}

我要比较的打字稿PluginActionsVS 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章