当使用 new 关键字传递对象时,groovy 代码不起作用

Rah*_*mar -1 groovy hashmap

为什么这段代码不起作用?

println getValueFromMap(new HashMap().put("a","aaaaa"))
//Its calling Method
def String getValueFromMap(Map<String,String> mapObject){
    return mapObject.get("a")
}
Run Code Online (Sandbox Code Playgroud)

而以下代码正在工作。

Map<String,String> fooMap=new HashMap()
fooMap.put("b","bbbbb")
println getValueFromMap(fooMap)
//Its calling Method
def String getValueFromMap(Map<String,String> mapObject){
    return mapObject.get("b")
}
Run Code Online (Sandbox Code Playgroud)

请解释。

iMa*_*kre 5

new HashMap().put("a","aaaaa")

不返回 a HashMap,而是返回null. 该put方法不返回HashMap.

Map<String,String> fooMap=new HashMap()
fooMap.put("b","bbbbb")
println getValueFromMap(fooMap)
Run Code Online (Sandbox Code Playgroud)

之所以有效,是因为您将实际值传递HashMap给方法,而不是put方法的结果,即null.