我有一個函式可以接收任何 Java/Scala 型別的輸入作為引數:
def foo(arbitraryInput: Object): Option[Object] = {
arbitraryInput match {
case map: Map[Object, Object] => map.get("foo")
// ...
case _ => None
}
}
我有 - 模式的問題: Map[Object, Object]:
如果我說
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]”?
uj5u.com熱心網友回復:
您可以將@unchecked注釋添加到一些型別引數:
def test(data: Any): Option[Any] = data match {
case map: Map[Any @unchecked, _] => map.get("foo")
case _ => None
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/333170.html
