У меня есть карта, где и ключи, и значения являются универсальными типами. Примерно так:
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)
}
}
}
Идея в том, что значение всегда будет отображаться на функцию который может принимать его как параметр, но, поскольку код написан сейчас, компилятор не может этого знать.