Я ищу помощь со следующей проблемой:Scala понижающего приведения дженерик
case class A(val name: String)
class B(name: String) extends A(name)
class Base[T <: A](param: T)
class SubClass[T <: B](param: T)
object Factory {
def create[T <: A](param: T) = {
param.name match {
case "something" => new Base(param)
case "something else" => new SubClass(param)
}
}
}
Завод не компилируется из-за несоответствие между парами Подклассом ожидает (T: < B) и определение из T в создании, который isT: < A. Есть ли для этого чистое решение или мне нужно сбрасывать при вызове конструктора подкласса? как бы выглядел понижающий?
Просто чтобы быть ясно - когда Подкласс contructed с парами, пары действительно Т <: Б.
Спасибо.
'T: senia
'класс B extends A' не компилируется для запуска ... –
спасибо за ваши комментарии senia и luigi. фиксированные опечатки. Он компилируется отдельно от рассматриваемого вопроса. – user1467422