लागू नहीं कर सकते मैं स्केला (2.9.2) में जेनरिक का उपयोग करता है एक जावा विधि लागू करने के लिए करना चाहते हैं। लेकिन मैं नाकाम रहने हूँ ...स्काला, जेनेरिक जावा विधि
जावा इंटरफ़ेस विधि:
public <T extends Number> void setAttribute(Key<T> key, Number value);
स्काला कोड है कि विधि लागू करना चाहते हैं:
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
हमें यह जानना होगा कि 'कुंजी' कैसा दिखता है। क्योंकि अगर मैं उपरोक्त कोड को ठीक से संकलित करता हूं तो 'सार्वजनिक इंटरफ़ेस कुंजी' का उपयोग करता हूं। –
@ गारफील्डकॉन किस स्केल के साथ काम कर रहे हैं? –
@ 0__ किस संस्करण के तहत यह संकलित करता है? –