快速提问为什么我们无法实例化类型成员?例如借此例如:实例化Scala类型成员导致错误
abstract class SimpleApplicationLoader {
type MyComponents <: BuiltInComponentsFromContext
def load(context: Context) = {
new MyComponents(context).application
}
}
class SiteServiceApplicationLoader extends SimpleApplicationLoader {
type MyComponents = SiteApplicationComponents
}
class SiteApplicationComponents(val context: Context) extends BuiltInComponentsFromContext(context) {
....
}
的SimpleApplicationLoader限定类型参数MyComponents(上势必BuiltinComponentsFromContext)。在加载方法中,类型参数MyComponents被实例化。 SiteServiceApplicationLoader将重写MyComponents类型为_SiteApplicationComponents)。
无论如何,编译器提供了以下错误:
Error:(13, 9) class type required but SimpleApplicationLoader.this.MyComponents found
new MyComponents(context).application
只是好奇为什么类型成员不能被实例化?任何解决方法?
谢谢!
澄清:您建议将一个抽象方法'newMyComponents'(它返回'MyComponents')添加到'SimpleApplicationLoader'。这个方法将在'SiteServiceApplicationLoader'中实现。它是否正确?因为这个含义并没有从第一个代码示例中变得100%清晰。 –