我有一个函数可以接收任何 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]
”?