Быстрый вопрос о том, почему мы не можем создавать экземпляры типов? Например, возьмем этот пример:Создание экземпляров 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). В методе load указан параметр типа MyComponents. SiteServiceApplicationLoader переопределяет тип MyComponents для _SiteApplicationComponents).
Во всяком случае, компилятор выдает следующую ошибку:
Error:(13, 9) class type required but SimpleApplicationLoader.this.MyComponents found
new MyComponents(context).application
Просто любопытно, почему членов типа не инстанциируемые? Любые обходные пути?
Спасибо!
Чтобы уточнить: Вы предлагаете добавить абстрактный метод 'newMyComponents' (который возвращает' MyComponents') в 'SimpleApplicationLoader'. Этот метод затем будет реализован в 'SiteServiceApplicationLoader'. Это верно? Поскольку это значение не стало на 100% понятным из первого примера кода. –