uringas genéricos em declarações variáveis no Sca

Em Java eu devo fazer isso:

class MyClass {
    private List<? extends MyInterface> list;

    public void setList(List<MyImpl> l) { list = l; }
}

...assumindo que MyImpl implements MyInterface) claro

O que é o analógico para isso em Scala, ao usar umBuffer?

import java.lang.reflect._
import scala.collection.mutable._

class ScalaClass {
   val list:Buffer[MyInterface]  = null

   def setList(l: Buffer[MyImpl]) = {
     list = l
   }
}

Isso (é claro) não compila - mas como declaro olist variável de tal maneira que funcion

EDITA; Estou adicionando um pouco mais. A diferença está obviamente relacionada ao fato de que, em Java, os genéricos são nunca covariante em T, enquanto que em Scala eles podem ser covariantes ou não. Por exemplo, a classe ScalaList é covariante em T (e necessariamente imutável). Portanto, o seguintewill compile:

class ScalaClass {
   val list:List[MyInterface]  = null

   def setList(l: List[MyImpl]) = {
     list = l
   }
}

Ainda estou lutando um pouco com o erro do compilador:

Covariant type T occurs in contravariant position in ...

Por exemplo; este erro do compilador ocorre na declaração de classe:

class Wibble[+T] {
  var some: T = _ //COMPILER ERROR HERE!
 }

Vou fazer uma pergunta separada ...

questionAnswers(2)

yourAnswerToTheQuestion