Ich möchte eine Java-Methode implementieren, die Generics in Scala (2.9.2) verwendet. Aber ich versagt ...Scala, kann generische Java-Methode nicht implementieren
Java Interface-Methode:
public <T extends Number> void setAttribute(Key<T> key, Number value);
Scala Code, der diese Methode implementieren möchten:
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)
}
Key wie folgt aussieht:
public class Key<T>
Aber das kompiliert nicht.
[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)
Ich kann nicht herausfinden, was das Problem ist. Irgendwelche Vorschläge/Idee?
greez GarfieldKlon
Wir müssen wissen, wie 'Key' aussieht. Denn wenn ich 'public interface Key' verwende, kompiliert der obige Code gut. –
@GarfieldKlon Mit welcher Version von scala arbeiten Sie? –
@ 0__ unter welcher Version kompiliert es? –