我有以下代碼:階:定義一個特徵類型的任何一個變量
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