Frage

Ich habe eine unerwartete Schwierigkeiten Berufung Put auf einer alten Schule hashtable. Was ist denn hier los?

Welcome to Scala version 2.8.0.final (Java HotSpot(TM) Client VM, Java 1.6.0_21).
Type in expressions to have them evaluated.
Type :help for more information.

scala> import com.ibm.mq._                 
import com.ibm.mq._

scala> MQEnvironment.properties                                                    
res1: java.util.Hashtable[_, _] = {}

scala> res1.put("transport", "MQSeries")
<console>:10: error: type mismatch;
 found   : java.lang.String("transport")
 required: ?0 where type ?0
       res1.put("transport", "MQSeries")
            ^

PS, die Frage steht immer noch wie es ist, aber ich habe ein unangenehmes Problem zu umgehen:

scala> new java.util.Hashtable[String, String]
res10: java.util.Hashtable[String,String] = {}

scala> res10.put("transport", "MQSeries")      
res11: String = null

scala> MQEnvironment.properties = res10

scala> MQEnvironment.properties        
res13: java.util.Hashtable[_, _] = {transport=MQSeries}
War es hilfreich?

Lösung

Das properties Schnittstelle erscheint eine jener alten Schule APIs, dass pre-date Java Generics zu sein. Diese Unterstreichungen in java.util.HashTable[_, _] Kürzel sind für Existenz Typen, von denen die ersten (der Schlüssel-Typ) entspricht den ?0 im Diagnose erscheinen. Diese alten Java „raw“ Typen sind ein unglücklicher, sichtbare Naht in Scala Java Interoperabilität, wenn auch eine, die in der Regel zeigt sich nur in sehr alten APIs.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top