简体   繁体   English

Scala:用于抽象类型的typeTag?

[英]Scala: typeTag for an abstract type?

I want to do something like the following: 我想做以下事情:

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
}

I want to write a reflection method in trait sim that reflects the probe class of trait sim, defined as an abstract type Probe. 我想在trait sim中编写一个反映方法,以反映trait sim的探针类,定义为抽象类型Probe。 How can I make typetag information for the abstract type available? 如何使抽象类型的Typetag信息可用?

Thanks! 谢谢!

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

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM