Scala:泛型隐式 class

Scala: Generic Implicit class

我正在尝试从 class 中获取类型 我正在隐式推断:

case class ToGet(key: String)

class Builder[T <: AnyRef] {

  def get(key: String)(implicit mf: Manifest[T]): ToGet = {
    ToGet(key)
  }
}

object Builder {

  import scala.reflect.runtime.universe._

  implicit class ToGetImplicits(obj: ToGet) {
    def future[T <: AnyRef]()(implicit mf: Manifest[T]): Future[Option[T]] = ???
  }
}

当我创建一个实例并调用上面的 future 时,它​​ returns Future[Option[Nothing]]

是否可以在此处获取类型或设计该类型的好方法?

编辑

例如:

val obj = new Builder[String]
obj.get("myKey").future() //this returns a Future[Option[Nothing]]

编辑 2

添加了 ToGet 定义

obj.get("myKey")returns一个ToGet。此时,清单已提供并被忽略。我们现在只有 ToGet.

现在 ToGet 上的 future 调用没有可以使用的类型信息,因此它推断 Nothing.

根据代码的意图,您可能希望将清单作为隐式参数传递给 ToGet class:

case class ToGet [T] (key: String)(implicit val mf: Manifest[T])

现在你的隐式 class:

implicit class ToGetImplicits[T](obj: ToGet[T]) {
  def future(): Future[Option[T]] = {
    // you can access obj.mf here for the manifest
    ???
  }
}

问题是:某些东西 必须携带类型信息。