Groovy映射作为形式参数传播

时间:2014-05-07 13:40:34

标签: groovy

我有一个包含40多个参数的SOAP方法,我想传递一个地图而不是列出方法调用中的所有参数。以下是示例代码:

Map input = [ Param1: 'Test1', Param2: 'Test2' ]

class WSClient {

    def post(String Param1, String Param2) {
        println "Param1: ${Param1}, Param2: ${Param2}"
    }
}

def client = new WSClient()

client.post(input)

有没有办法传播"将键/值映射到方法形式参数?或者还有其他方法可以做到这种方式吗?

以上代码会产生No signature of method: WSClient.post() is applicable for argument types: (java.util.LinkedHashMap)

1 个答案:

答案 0 :(得分:3)

如果您可以对地图中的元素及其顺序进行假设,则可以执行此操作。像这样的东西会起作用......

client.post(*(input.values() as List))

如果您不知道参赛作品的顺序或参赛作品的数量,那将无济于事。