代码之家  ›  专栏  ›  技术社区  ›  Don Branson marios

在Scala中声明Java Map<String,Object>参数?

  •  0
  • Don Branson marios  · 技术社区  · 8 年前

    考虑到这个Java:

    Queue.DeclareOk queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete, 
        Map<String, Object> arguments) throws IOException;
    

    null

    channel.queueDeclare(inputQueueName, true, false, true, null)
    

    在一个空映射中要传递的Scala声明是什么?这:

        channel.queueDeclare(inputQueueName, true, false, true, Map[String, Object]())
    

    结果:

    found   : scala.collection.immutable.Map[String,Object]
    required: java.util.Map[String,Object]
        channel.queueDeclare(inputQueueName, true, false, true, Map[String,Object]())
    

    以及:

    channel.queueDeclare(inputQueueName, true, false, true, java.util.HashMap[String,Object]())
    

    object java.util.HashMap is not a value
    
    1 回复  |  直到 8 年前
        1
  •  3
  •   Jeffrey Chung    8 年前
    import scala.collection.JavaConverters._
    
    val emptyMap = Map.empty[String, Object].asJava
    // java.util.Map[String, Object]
    
    channel.queueDeclare(inputQueueName, true, false, true, emptyMap)
    

    或:

    channel.queueDeclare(inputQueueName, true, false, true, new java.util.HashMap[String, Object]())
                                                         // ^ add new here
    

    new java.util.HashMap[String, Object] (不带括号)也适用。

    推荐文章