我有一个函数可以接收任何 Java/Scala 类型的输入作为参数:
def foo(arbitraryInput: Object): Option[Object] = {
arbitraryInput match {
case map: Map[Object, Object] => map.get("foo")
// ...
case _ => None
}
}
我对: Map[Object, Object]-pattern 有疑问:
如果我说
case map : Map[Object, Object],我会得到一个警告non-variable type argument is unchecked。如果我说
case map : Map[_, _],我得到一个错误map.get,表明编译器找到类型_,但正在寻找Object。如果我说
case map : Map编译器抱怨 Map 需要类型参数
是否可以像这样匹配并告诉编译器“嘿,我知道类型信息在运行时丢失了,Object很好,给我Map[Any, Any]”?