这个问题几乎就在标题中。
例如,考虑以下代码:
case class CustomerId(value: String) extends AnyVal
val someId: AnyVal = CustomerId("asdf-123")
def magicExtractor(anyAnyVal: AnyVal): String = ???
assert("asdf-123" == magicExtractor(someId))
字符串
显而易见的是,在所有AnyVal子类的详尽列表上进行模式匹配不是一种选择。
1条答案
按热度按时间8xiog9wr1#
由于AnyVal是所有原始类型和用户定义值类的基类,并且JVM会删除类型信息,因此唯一的方法是使用反射:
字符串
如果你在最后分享你选择的方式,那就太好了。