【问题标题】:Scala: typeTag for an abstract type?Scala:抽象类型的 typeTag?
【发布时间】:2015-01-20 23:57:17
【问题描述】:

我想做如下的事情:

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类,定义为抽象类型Probe。如何使抽象类型的类型标签信息可用?

谢谢!

【问题讨论】:

标签: scala reflection tags abstract-type


【解决方案1】:

对于抽象类型,WeakTypeTags 可用:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多