像"C: ClassTag : Manifest"这样的泛型类型是什么意思?



我找到了一些片段如下:

import org.json4s.DefaultFormats
import org.json4s.jackson.JsonMethods._
import scala.io.Source
import scala.reflect.ClassTag
class ConfigLoader[C: ClassTag : Manifest](filePath: String) {
def loadFromFile(): C = {
implicit val formats = DefaultFormats
parse(Source.fromFile(filePath).mkString, false).extract[C]
}
}

C: ClassTag : Manifest这样的泛型类型是什么意思?

语法C: ClassTag(implicit ct: ClassTag[C])的简写。

即类构造函数的完整形式是

class ConfigLoader[C](filePath: String)(implicit ct: ClassTag[C], m: Manifest[C]) { ... }

实际上,这意味着在ConfigLoader的定义中,需要ClassTag[C]Manifest[C]的实例,因此它们必须作为参数提供给构造函数。

相关内容

  • 没有找到相关文章

最新更新