我有一个遗留Scala应用程序,我们使用Enums(所以我真的没有选择更改为案例类)。我遇到以下功能问题:
def mapFamily(assetMetadata: AssetMetadata): String = {
assetMetadata.family match {
case None => throw InvalidAssetFamilyException("Family is required")
case Some(EnumFamily.Inside) => "1"
case Some(EnumFamily.Outside) => "2"
case unknown => throw InvalidFamilyException(s"Unknown Family: $unknown.")
}
assetMetadat.family
是Option[EnumFamily.Family]
枚举如下所示:
object EnumFamily extends Enumeration {
type Family = Value
val Inside = Value("Inside")
val Outside = Value("Outside")
}
当我尝试调用mapFamily
时,我总是得到一条未知/异常情况,并带有如下消息:
Unknown Family: Some(Inside)
为什么不能正确匹配?
答案 0 :(得分:1)
原来这个问题完全无效。我的问题是由于反序列化。我们正在使用的json4s的版本(是的,它的遗留。永远不会使用json4s)实际上将它反序列化为具有类似属性的错误枚举(并且以某种方式反射性地击败所有类型检查)。
我会留下这个问题,但是如果你到了这里,你使用的是序列化器吗?使用您的调试器,看看您是否找回了您期望的类型。