2016-09-08 75 views
-1

我有一個像下面的lambda表達式。我想問的是鑄造方法參數有沒有簡單的方法或最佳做法?如何投射lambda方法參數?

 results.forEach(
      (result) -> 
      { 
       ((JSONObject)result).put("test", "test"); 
       ((JSONObject)result).put("time", System.currentTimeMillis()); 
       otherList.add(((JSONObject)result)); 
      } 
    ); 

當我試圖改變輸入型像

(JSONObject result) -> 

我得到下面的錯誤;

incompatible types: Consumer<JSONObject> cannot be converted to Consumer<? super Object> 
+0

由於有消息稱,這些類型不兼容。爲什麼不引入一個局部變量? –

+0

@OliverCharlesworth起初我認爲(創建一個新的局部變量)但是如果我有5-6個輸入呢?我是否需要爲它們創建一個新的變量? – hellzone

+0

這個問題不是lambda表達式的唯一 - 它適用於任何方法。 (也就是說,如果你有5-6輸入的拉姆達,奇怪的事情大概是怎麼回事!) –

回答

0

由於Fabian意見下的建議,你可能已經初始化,您resultsListList<Object>

你可以做的是,你可以有List<JSONObject>

results.forEach(
      (result) -> 
      { 
       result.put("test", "test"); 
       result.put("time", System.currentTimeMillis()); 
       otherList.add(result); 
      }