当前位置: 首页 > 面试题库 >

在切换案例中使用枚举值的字符串表示形式

勾岳
2023-03-14
问题内容

为什么在切换情况下无法将枚举值用作字符串?(或者这有什么问题:)

String argument;
switch (argument) {
    case MyEnum.VALUE1.toString(): // Isn't this equal to "VALUE1" ?
    // something    
break;
    case MyEnum.VALUE2.toString():
    // something else
break;

问题答案:

您只能使用编译时已知的字符串。编译器无法确定该表达式的结果。

也许你可以尝试

String argument = ...
switch(MyEnum.valueOf(argument)) {
   case VALUE1:

   case VALUE2:


 类似资料:
  • 问题内容: 我定义了以下枚举 现在的印刷价值是 相反,我想打印枚举的值 要实现此功能可以做些什么? 问题答案: 您正在打印枚举 对象 。如果只想打印该属性,请使用该属性: 请参阅 对枚举成员及其属性 的 编程访问权限 部分 : 如果您有枚举成员并需要其名称或值: 如果只需要提供自定义字符串表示形式,则可以向枚举添加方法: 演示:

  • 为什么在开关情况下不能将枚举值用作字符串?(或者这有什么问题:)

  • 我有一个java对象,它有一个名为type的属性,代表一个枚举: 当使用springfox在yaml中生成规范时,该对象在引用对象TypeValue时生成以下输出: 我想做的是在生成doc时忽略枚举类型,从规范中删除枚举类型。这就是我想要的: type:对象属性:op:type:string路径:type:string值:type:对象属性:{}标题:补丁 我尝试使用@ApiModelProper

  • 在尝试获取allowableValues标记的枚举值时,我遇到了以下错误。 批注属性apimodelProperty.AllowAbleValues的值必须是常量表达式 我想做的是: 我有可能做我想做的事吗?我知道在我的API中只公开枚举是可能的,然后swagger会自动识别允许的值,但是需要将有问题的字段公开为字符串,即使我们的内部逻辑将其作为枚举。 提前感谢您的帮助!

  • 我定义了以下枚举 现在打印值为 相反,我想打印枚举的值 可以做什么来实现这个功能?

  • 假设我有一个简单的注释: 和枚举: 我不能这样使用这个注释: 如果说“它必须是一个编译过的时间常数”,这段代码就会失败。我确实理解为什么会发生这种情况,而且我知道JSL中关于编译时间常数的部分。 我的问题是,为什么不按照规范将枚举作为编译时间常数,原因是什么。你不能更改枚举名。。。 库马尔编辑