我有以下代码:阶:定义一个特征类型的任何一个变量
import scala.reflect.runtime.{universe => ru}
case class OutputAnnotation() extends scala.annotation.StaticAnnotation
trait SimpleTrait {
var probe: Any
def outputs(): List[String] = {
val ouputs: List[String] = Nil
outputs
}
}
class WorldProbe {
@OutputAnnotation
var population: Int = 0
@OutputAnnotation
var gdp: Float = 0
var notIntersting: String = ""
}
class World extends SimpleTrait {
var probe: Any = new WorldProbe
}
object Test {
def main(args: Array[String]) {
var w: World = new World
var outp = w.outputs()
}
}
的想法是有一些类,所有实现某种特质,SimpleTrait,应该要求他们定义一个变量Type ... hmm的探针,类型不是真的,因为实现SimpleFeature的每个类都将带有它自己的探针类型。因此,我可以在SimpleTrait中进行探测的唯一类型是Any。给定的代码编译,但在运行时执行导致stackoverflow错误。 在附注上,我想从probe类中获取所有使用输出注释注释的变量。我怎么能这样做?
谢谢!
堆栈溢出是仅仅是因为你拼错了'VAL ouputs'(而不是'outputs'),这使得第二线实际调用相同的方法递归地广告vitam aeternam。 – sjrd 2014-11-06 21:29:51