修改构造函数参数,然后将其传递给Scala中的超类构造函数
我有一个超类:修改构造函数参数,然后将其传递给Scala中的超类构造函数,scala,inheritance,Scala,Inheritance,我有一个超类: class Filter(val param: ComplexFilterParams){ def this(config: String) = this(parseStrConfig(config)) 我需要创建一个子类,它获取一个字符串参数,然后以另一种方式解析它,并创建ComplexFilterParams 诸如此类: class NewFilter(str:String) extends Filter { 有办法吗 我有一个解决办法。但我觉得很难看。我创建伴生
class Filter(val param: ComplexFilterParams){
def this(config: String) = this(parseStrConfig(config))
我需要创建一个子类,它获取一个字符串参数,然后以另一种方式解析它,并创建ComplexFilterParams
诸如此类:
class NewFilter(str:String) extends Filter {
有办法吗
我有一个解决办法。但我觉得很难看。我创建伴生对象,在其中定义转换方法,然后执行以下操作:
class NewFilter(str:String) extends Filter(NewFilter.convert(str)) {
使用另一个
apply
实现,您可以更轻松地在伴生对象中实现,如:
class NewFilter(val param: ComplexFilterParams) extends Filter(param){
//other implementations
}
object NewFilter {
def apply(str: String) = new NewFilter(convert(str))
def convert(str: String): ComplexFilterParams = ...
}
val filter = NewFilter("config string")
使用另一个
apply
实现,您可以更轻松地在伴生对象中实现,如:
class NewFilter(val param: ComplexFilterParams) extends Filter(param){
//other implementations
}
object NewFilter {
def apply(str: String) = new NewFilter(convert(str))
def convert(str: String): ComplexFilterParams = ...
}
val filter = NewFilter("config string")
结尾处的代码看起来正常,但不太确定是否在伴随对象中使用
def this
而不是apply
方法。结尾处的代码看起来正常,但不确定是否在伴随对象中使用def this
而不是apply
方法。