Связь параметризованных типов

У меня есть карта, где и ключи, и значения являются универсальными типами. Примерно так:

Map[Foo[A], Bar[A]]

Я хотел бы сказать, что тип A может быть разным для каждой пары "ключ-значение" на карте, но каждый ключ всегда параметризуется тем же типом, что и значение, которому он сопоставляется. Таким образом, Foo [Int] всегда отображается в Bar [Int] , a Foo [String] всегда отображается в Bar [String] и так далее.

Кто-нибудь знает способ выразить это?

РЕДАКТИРОВАТЬ:

Вот пример того, что я пытаюсь сделать:

trait Parameter // not important what it actually does

class Example {
  val handlers: Map[_ <: Parameter, (_ <: Parameter) => _] = Map()

  def doSomething() {
    for ((value, handler) <- handlers) {
      handler(value)
    }
  }
}

Идея в том, что значение всегда будет отображаться на функцию который может принимать его как параметр, но, поскольку код написан сейчас, компилятор не может этого знать.

8
задан Masterofpsi 26 October 2011 в 01:42
поделиться