Scala:抽象类型的typeTag



我想做如下事情:

trait Sim {
    type Probe
    var probe: Probe
    def reflectProbe() {
      // works: 
      val tt_int = scala.reflect.runtime.universe.typeTag[Int]
      // does not work (No TypeTag available for Sim.this.Probe):
      val tt_probe = scala.reflect.runtime.universe.typeTag[Probe]
    }
}
class WorldProbe
class World extends Sim {
  type Probe = WorldProbe
  var probe: Probe = new WorldProbe
}

我想在 trait sim 中编写一个反射方法,该方法反映 trait sim 的探测器类,定义为抽象类型 Probe。如何使抽象类型的类型标记信息可用?

谢谢!

对于抽象类型,可以使用WeakTypeTags

val tt_probe = scala.reflect.runtime.universe.weakTypeTag[Probe]

最新更新