Mit scala nennen java.util.Hashtable # put
-
01-10-2019 - |
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}
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