抽象类的ArrayBuffer可以在Scala中保存派生类的成员吗?

时间:2018-04-20 04:36:23

标签: scala abstract-class derived-class arraybuffer

我正在定义Abstract类的ArrayBuffer,如下所示。

abstract class Transformation(tableName: List[String],operation: List[String], outputTable: String){}
var transformationArray: ArrayBuffer[Transformation] = ArrayBuffer()

这个ArrayBuffer可以包含派生类的元素吗?

class Map(tableName: List[String], newColumn: String, operation: List[String], outputTable: String) 
extends Transformation(tableName: List[String],operation: List[String], outputTable: String) {

}

transformationArray += new Map(tableName,newColumn,operation,outputTable)

我无法从transformationArray

访问Map的值

1 个答案:

答案 0 :(得分:1)

类构造函数默认为private。添加val即可更改。

abstract class Transformation(val tableName   :List[String]
                             ,val operation   :List[String]
                             ,val outputTable :String)

现在您可以访问它们了。

transformationArray.head.outputTable  //res0: String = tbl