如何在scala中反映枚举类?
我有一个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
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)