我在trait管道[In,Out]中创建了不同类型的对象,我想动态管道这些对象。管道顺序可以动态改变 我已将这些对象存储在任何类型的数组中,我想以动态方式转换这些对象。
trait Pipe[In, Out] {
def apply(rdd: RDD[In]): RDD[Out]
def |[Final](next: Pipe[Out, Final]): Pipe[In, Final] = {
val self = this
new Pipe[In, Final] {
def apply(rdd: RDD[In]) = next(self(rdd))
}
}
}
val timestampConverter = new Pipe[String, String]
val summaryBuilder = new Pipe[String, String]
val seperatedRdd = new Pipe[String, (String, ArrayBuffer[Double])]
val arrBuf = new ArrayBuffer[Any]()
arrBuf += timestampConverter
arrBuf += summaryBuilder
arrBuf += seperatedRdd
var ss:Any = arrBuf(0)
for(x <- 1 to arrBuf.length){
ss = ss.asInstanceOf[PreviousType] | x.asInstanceOf[Type]
}
是否存在任何用于保持不同对象类型的结构,我想解决上面的PreviousType和Type。