我在 spark 程序中定义了一些 trait 和 class,打包到 jar 中时效果很好,但是如果在 spark repl 中执行,它将失败。
trait Builder {
trait Layer {
def layerSize: Int
}
abstract class Layer1 extends Layer
class Layer2(val layerName: String) extends Layer {
override def layerSize: Int = 10
def addInput(from: Layer): String = {
""
}
}
object Layer2 {
def apply(name: String): Layer2 = {
new Layer2(name)
}
}
val FEATURES: Layer = new Layer1 {
override val layerSize = 10
}
}
class aBuilder extends Builder
然后我运行代码:
val builder = new aBuilder
val test = builder.Layer2("")
test.addInput(builder.FEATURES)
它错误:
<console>:32: error: type mismatch;
found : builder.Layer
required: builder.Layer
test.addInput(builder.FEATURES)