Scala не может реализовать общий метод Java

Я хотел бы реализовать метод Java, который использует дженерики в scala (2.9.2 ). Но я терплю неудачу...

Метод интерфейса Java:

public <T extends Number> void setAttribute(Key<T> key, Number value);

Код Scala, который хочет реализовать этот метод:

def setAttribute[T <: Number](key: Key[T], value: Number) = {
  setAttributeLocal(key, value)  }

private def setAttributeLocal[T](key: Key[T], value: T) = {
  val stringValue = ConvertUtils.convert(value, classOf[String]).asInstanceOf[String]
  session = session + (key.getValue() -> stringValue)
}

Ключ выглядит как:

public class Key<T>

Но это не компилируется.

[error]  found   : mypackage.Key[T]
[error]  required: mypackage.Key[java.lang.Number]
[error] Note: T <: java.lang.Number, but Java-defined class Key is invariant in type T.
[error] You may wish to investigate a wildcard type such as `_ <: java.lang.Number`. (SLS 3.2.10)
[error]     setAttributeLocal(key, value)

Я не могу понять, в чем проблема. Любые предложения/идея?

привет ГарфилдКлон

7
задан GarfieldKlon 2 August 2012 в 07:03
поделиться