Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在scala中反映枚举类?_Scala_Oop_Reflection_Enums_Enumeration - Fatal编程技术网

如何在scala中反映枚举类?

如何在scala中反映枚举类?,scala,oop,reflection,enums,enumeration,Scala,Oop,Reflection,Enums,Enumeration,我有一个Scala枚举,我想从String获取枚举值 object CVVStatus extends Enumeration { type CVVStatus = Value val PRESENT, NOT_PRESENT, VALID, INVALID = Value } 我想这样做: val prop = new Properties() prop.load(new FileInputStream("config.conf")) val tmp = prop.getProper

我有一个Scala枚举,我想从
String
获取枚举值

object CVVStatus extends Enumeration {
  type CVVStatus = Value
  val PRESENT, NOT_PRESENT, VALID, INVALID = Value
}
我想这样做:

val prop = new Properties()
prop.load(new FileInputStream("config.conf"))
val tmp = prop.getProperty(propname)
val s:CVVStatus = StringtoEmum(tmp)

如果我需要从不同的枚举对象名到枚举对象的大量枚举,我应该如何实现这一点?我应该导入什么包?

正如@Alec在评论中指出的,这是“免费”的,在工作表中很容易看到:

object CVVStatus extends Enumeration {
  type CVVStatus = Value
  val PRESENT, NOT_PRESENT, VALID, INVALID = Value
}

val test_present = "PRESENT"  // test_present: String = PRESENT
val test_incorrect = "INCORRECT"  // test_incorrect: String = INCORRECT
val enumeration_present = CVVStatus.withName(test_present)  // enumeration_present: CVVStatus.Value = PRESENT
val enumeration_incorrect = CVVStatus.withName(test_incorrect)  //java.util.NoSuchElementException: No value found for 'INCORRECT'
最后一个失败,因为它不是有效的枚举。名为的
文档内容如下:

从此枚举返回一个名称与参数s匹配的值。名称通过反射自动确定


无需导入。

正如@Alec在评论中指出的,这是“免费”的,并且很容易在工作表中看到:

object CVVStatus extends Enumeration {
  type CVVStatus = Value
  val PRESENT, NOT_PRESENT, VALID, INVALID = Value
}

val test_present = "PRESENT"  // test_present: String = PRESENT
val test_incorrect = "INCORRECT"  // test_incorrect: String = INCORRECT
val enumeration_present = CVVStatus.withName(test_present)  // enumeration_present: CVVStatus.Value = PRESENT
val enumeration_incorrect = CVVStatus.withName(test_incorrect)  //java.util.NoSuchElementException: No value found for 'INCORRECT'
最后一个失败,因为它不是有效的枚举。名为的
文档内容如下:

从此枚举返回一个名称与参数s匹配的值。名称通过反射自动确定


不需要导入。

您也可以考虑使用CASE对象。请检查这些答案以供参考


也可以考虑使用case对象。请检查这些答案以供参考

无套餐,免费提供
。withName
是您正在寻找的方法<代码>val s:CVVStatus=CVVStatus。withName(tmp)
无软件包,免费提供
。withName
是您正在寻找的方法<代码>val s:CVVStatus=CVVStatus.withName(tmp)