2016-12-05 16 views
-2

爲什麼這段代碼不起作用?對象通過新關鍵字傳遞時groovy代碼不工作

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

而下面的代碼正在工作。

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") 
} 

請解釋。由於是提前

+2

是否有任何特別的原因,你爲什麼使用Java風格的語法而不是Groovy的Map-literal語法?例如:'[a:「aaaaa」]'用一個鍵('「a」')和相關值'「aaaaa」'創建一個映射。 – BalRog

回答

3

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

不返回HashMap,它返回nullput方法不返回HashMap

Map<String,String> fooMap=new HashMap() 
fooMap.put("b","bbbbb") 
println getValueFromMap(fooMap) 

的作品,因爲你正在傳遞的實際HashMap的方法,而不是put方法,這是null的結果。

相關問題