2016-09-08 92 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); 
      }