Можно ли изменить дисперсию базового класса / трейта в Scala?

Я хотел бы унаследовать от неизменяемой карты Scala. Он определяется как таковой:

trait Map[A, +B]

К сожалению, моя реализация должна быть инвариантной в B. Я попробовал следующее, но безуспешно:

def +(kv : (A, B)) : MyMap[A, B] = { ... }

override def +[B1 >: B](kv : (A, B1)) : MyMap[A, B1] =
    throw new IllegalArgumentException()

Может быть, есть уловка с @uncheckedVariance ?

6
задан retronym 17 August 2011 в 21:19
поделиться