我有这段代码,当然在编译过程中我有这个错误
。未选中,因为它被擦除消除 案例映射:MapWithObject => 值(映射、路径、索引 + 1(
如何更改模式匹配大小写以摆脱该消息?
type MapWithObject = java.util.HashMap[String, Object]
def value[T : ClassTag](parsedMap: MapWithObject,
path: String,
index: Int = 0): Option[T] = {
val key = if (path.contains(".")) path.split("\.")(index) else path
parsedMap.asScala.get(key).flatMap({
case value: T => Some(value)
case map: MapWithObject => value(map, path, index + 1)
case _ => None
})
}
要摆脱unchecked
警告,请使用@unchecked
(因为您已经基本上没有类型化的Object
到处飞,一个@unchecked
注释 不会让它变得更糟(:
import scala.reflect.ClassTag
import scala.collection.JavaConverters._
import java.util.{HashMap => JHashMap}
type MapWithObject = JHashMap[String, Object]
def value[T: ClassTag](
parsedMap: MapWithObject,
path: String,
index: Int = 0
): Option[T] = {
val key = if (path.contains(".")) path.split("\.")(index) else path
parsedMap.asScala.get(key).flatMap({
case value: T => Some(value)
case map: JHashMap[String @unchecked, Object @unchecked] =>
value(map, path, index + 1)
case _ => None
})
}
作为冗长java.util.HashMap
的补救措施,您可以使用重命名导入HashMap => JHashMap
而不是类型定义。