質問

古い学校のハッシュテーブルを装着するのに予想外の問題があります。何が起きてる?

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、質問はまだ現状ですが、私は厄介な回避策を持っています:

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}
役に立ちましたか?

解決

それか properties インターフェイスは、Javaジェネリック以前の古い学校のAPIの1つであるように見えます。それらのアンダースコア java.util.HashTable[_, _] 実存的なタイプの速記であり、最初の(キータイプ)は ?0 診断に表示されます。これらの古いJavaの「生」タイプは、通常非常に古いAPIでのみ表示されるものではありますが、ScalaのJavaの相互運用性の不幸な目に見える縫い目です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top