如何在没有警告的情况下匹配未知的通用类型

How to match on unknown generic type without warnings

我有一个函数可以接收任何 Java/Scala 类型的输入作为参数:

def foo(arbitraryInput: Object): Option[Object] = {
    arbitraryInput match {
        case map: Map[Object, Object] => map.get("foo")
        // ...
        case _ => None
    }
}

我对 : Map[Object, Object] 模式有疑问:

是否可以像这样匹配并告诉编译器“嘿,我知道类型信息在运行时丢失,Object 没问题,只要给我 Map[Any, Any]”?

您可以将 @unchecked 注释添加到某些类型参数:

def test(data: Any): Option[Any] = data match {
  case map: Map[Any @unchecked, _] => map.get("foo")
  case _ => None
}