Scala абстрактный метод класса, возвращающий новый соответствующий дочерний объект класса

У меня в голове есть следующий класс:

abstract class MyClass (data: MyData) {

  def update(): MyClass = {
    new MyClass(process())
  }

  def process(): MyData = {
    ...
  }

}

Однако абстрактные классы не могут быть инстанцированы, поэтому строка new MyClass(process()) является ошибкой. Мой вопрос - есть ли способ сказать компилятору, что в случае каждого из дочерних классов MyClass я хочу создать объект именно этого дочернего класса? Кажется излишеством писать этот метод во всех дочерних классах. Играя с параметрами типа класса или метода, я не смог добиться этого сам.

5
задан noncom 12 January 2012 в 13:30
поделиться