На самом деле, вы ошибаетесь.Ваша ошибка: «ошибка: переопределение ячейки значения в признаке T типа Cell [AA]; ячейка метода должна быть стабильным, неизменным значением: def cell: Cell [AA]».
Теперь, пока я могуПредложите, чтобы T принял параметр типа V <: A, а затем, чтобы функция cell () возвращала Cell [V], реальная проблема здесь даже не связана с генериками.В T ваша ячейка является членом данных.В U «клетка» является функцией.Компилятор просто хочет, чтобы вы выбрали один (и тот, который работает и имеет смысл, состоит в том, чтобы он был функцией в обоих местах, так что ... просто измените эту "val cell" на "def cell" и задайте один из тех 'ячейка определяет реализацию, и вы в порядке). </s>
Обновление (теперь, когда вопрос был исправлен):
Хорошо, так что, какВ моем исходном ответе предлагается, чтобы trait T принимала параметр типа для решения этой проблемы, например:
trait A {}
class AA extends A {}
trait T[V <: A]{
val cell:Cell[V]
}
class U(inCell: Cell[AA]) extends {val cell = inCell} with T[AA]