我有一个Scala Enumeration,我希望从String
获取Enumeration值。
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)
如果我需要从枚举对象的不同Enumeration对象名中进行大量枚举,我应该如何实现?我应该导入什么包?
答案 0 :(得分:0)
正如@Alec在评论中指出的那样,使用Enumeration class这是“免费”,并且很容易在工作表中看到:
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'
最后一个失败,因为它不是有效的枚举。 withName
文档为:
从此枚举中返回一个名称与参数s匹配的值。名称通过反射自动确定。
无需进口。
答案 1 :(得分:0)
您也可以考虑使用案例对象。作为参考,请检查这些stackoverflow答案 Case Objects vs Enumerations How to access objects within an object by mixing in a trait with reflection?