我正在为scala类创建JSON。
我想要test.c.a
,但错误编译失败
import scala.language.dynamics
import scala.collection.mutable
object Json extends App{
class dynamicClass extends Dynamic {
var map = mutable.Map[String, Any]()
def selectDynamic(key: String) = map(key)
def updateDynamic(key: String)(value: Any) {
map(key) = value
}
override def toString = map.toString()
}
var test = new dynamicClass
var innerTest = new dynamicClass
innerTest.a = "zzzz"
innerTest.b = "asdfsdf"
test.a = "this a"
test.b = "this b"
test.c = new dynamicClass
println(test.c.a)
}
答案 0 :(得分:0)
这里的问题是您有Map
的{{1}},因此编译器不知道Any
是test.c
的实例,Scala是强类型的
您可以使用类型参数来告诉dynamicClass
您的对象是selectDynamic
的实例。完全不能使用dynamicClass
,您可以将其替换为模式匹配。
asInstanceOf