例如,有两个名为A和B的scala类。
class A{
val aVariable:String="a"
}
class B(val newVariable:String) extends A{
def newMethod(): Unit ={
}
}
问题是如何使用 A 对象来实例化 B 对象及其变量?例如,一个函数采用一个 A 对象和一个字符串来创建 B 对象
val bObject:B=BuildFunc(new A(),"string")
如果 A 包含很多变量,有没有办法避免手动设置每个变量?
似乎在Java中这可以通过像super(aObject)
这样的代码来完成,Scala中有等效的方法吗?
这里有多种解决方案。例如,定义 A 将 A 的构造函数参数提升到字段中:
class A(val foo: String)
class B(override val foo: String, val baz: String) extends A(foo)
如果你不能改变A的定义,那么也许这会有所帮助:
class A {
val foo: String = "foo"
}
class B(override val foo: String, val baz: String) extends A
希望有帮助。