当您使用关键字创建HKT类型时,如何处理模式匹配中的'type'类型?



我有这段代码,当然在编译过程中我有这个错误

。未选中,因为它被擦除消除 案例映射: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而不是类型定义。

相关内容

  • 没有找到相关文章

最新更新