2016-09-08 6 views
-1

私は以下のようなラムダ式を持っています。私が尋ねたいのは、メソッドのパラメータをキャストするための簡単な方法やベストプラクティスはありますか?ラムダメソッドのパラメータをキャストする方法は?

 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はコメントの下で示唆したように、あなたはあなたが行うことができますresults

List様または List<Object>何に初期化しているかもしれませんが、あなたはそれらの、 List<JSONObject>

results.forEach(
      (result) -> 
      { 
       result.put("test", "test"); 
       result.put("time", System.currentTimeMillis()); 
       otherList.add(result); 
      } 
関連する問題