我想實現一個在scala(2.9.2)中使用泛型的java方法。但我沒有......Scala,不能實現通用java方法
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)
我找不出什麼問題。任何建議/想法?
greez GarfieldKlon
我們需要知道'Key'的樣子。因爲如果我使用'public interface Key',上面的代碼編譯得很好。 –
2012-07-30 14:24:21
@GarfieldKlon你正在使用哪個版本的scala? – 2012-07-30 14:34:54
@ 0__在哪個版本下編譯? – 2012-07-30 14:35:52