你好stackoverflowers!
我遇到了一个我自己无法弄清楚的问题,因为我对Scala来说相对较新。
sealed trait ParentType {}
class ChildType1(start: Integer, end: Integer) extends ParentType {
val _key = start
val _value = end
}
class ChildType2(start: String, end: String) extends ParentType {
val _key = start
val _value = end
}
class ChildType3(start: String, end: Double) extends ParentType {
val _key = start
val _value = end
}
case class Root(simple: String, intervals: List[ParentType])
val rootInstance = new Root("foo", List(new ChildType2("foo", "bar"), new ChildType1(1, 4), new ChildType3("foo", 2.3) ))
(我编写此代码是为了能够使用json4s提取具有多态列表的案例类)
我希望能够访问列表中每个成员的_key和_value的每个值 rootInstance。
rootInstance.intervals.foreach((item) => println(item))
返回
com.polymorphic.Boot$ChildType2$1@76933bcb
com.polymorphic.Boot$ChildType$1@55dec1dd
com.polymorphic.Boot$ChildType3$1@1389c036
但是我无法访问每个ChildType对象(item._key和item._value)的_key和_value,就好像它们不是 公开的,或在范围内......
我做错了吗?我会很感激任何类型的赛道:)
答案 0 :(得分:2)
intervals
是List[ParentType]
,因此如果您想要访问_key
,则必须在_value
内定义ParentType
和sealed trait ParentType {
val _key: Any
val _value: Any
}
:
val
此外,使用sealed trait ParentType {
val _key: Any
val _value: Any
}
class ChildType1(val _key: Int, val _value: Int) extends ParentType
标记构造函数参数会更简洁:
{{1}}