将不同对象的集合添加到ArrayBuffer

时间:2016-09-07 06:14:57

标签: scala

我想在ArrayBuffer集合中添加不同的对象,所以我必须定义一个基类

case class base (a:String,b:String)
case class Super1 (a:String, b:String, c:String) extends base(a,b)
case class Super2 (a:String, b:String, c:String, d:String) extends base(a,b)
val array=New ArrayBuffer[base]()
val super1=new Super1("1","2","super1")
val super2=new Super2("1","2","super2","super2")
array+=(super1)
array+=(super2)

实际上,还没有测试过上面的代码,但是想知道添加对象是Super1还是Super2而不是基类,因为我需要派生类中所有参数的值。

1 个答案:

答案 0 :(得分:1)

您的第一个问题是您无法继承case class。使用直线classtrait即可。

在将类实例加载到ArrayBuffer之后,然后从array+=super1 array+=super2 array.head match { case Super1(a,b,c) => println("got 1") case Super2(a,b,c,d) => println("got 2") case _ => println("got bad") } 中提取出来之后,您可以使用模式匹配来确定正确的类型。

$filepath

您的"未经测试"还有一些其他问题。代码,但它们很容易解决。