Я ищу способ определить метод, который возвращает тип T, где T = тип подкласса.
Я знаю, что я мог бы сделать это, используя абстрактные типы, но мне не нравятся издержкинеобходимость переопределения T для каждого подкласса.
Пример кода:
object Helper {
def help[A <: MyClass](cls: A): Option[A] = { cls.foo() map { _.asInstanceOf[A] } }
}
class MyClass {
type T <: MyClass
def foo(): Option[T] = Some(this.asInstanceOf[T])
}
class ChildClass extends MyClass {
type T = ChildClass
}
Возможно, новая языковая функция облегчила эту задачу?Или я могу использовать this.type каким-то образом?Для меня важно, чтобы я мог определить вспомогательный класс, который может вызывать foo таким образом.