Scala:typeTag是抽象类型吗?

时间:2015-01-19 15:08:55

标签: scala reflection tags abstract-type

我想做以下事情:

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。如何为抽象类型提供类型标签信息?

谢谢!

1 个答案:

答案 0 :(得分:0)

对于抽象类型,WeakTypeTags可用:

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