2016-03-24 12 views
6

私はJava 8の新機能ですが、これは愚かな質問かもしれませんが、私はこの時点で固執しています。java lambdaj 'variable_name'を変数エラーに解決できません

私はEclipseで次のコードを実行しようとしていますが、コンパイル時にエラーが発生します。

import java.util.ArrayList; 
import java.util.Collection; 
import java.util.List; 
import java.util.function.Predicate; 
import java.util.stream.Stream; 
import ch.lambdaj.Lambda; 

public class LambdajTest { 

    public static void main(String[] args) { 

     List list = new ArrayList(); 
     list.add(1); 
     list.add(3); 
     list.add(8); 
     list.add(10); 
     list.add(16); 

     int sum = list.stream().filter(p -> p > 10).mapToInt(p -> p).sum(); 
    } 

} 

エラーは次のとおりです。 - pは変数に解決できません。 クラスパスにlambdaj 2.3.3 jarを追加しました。

優しく溶液を提供する。 ありがとうございます。

+0

ラムダ式のpをintとして宣言する必要があります – ryekayo

+1

コードにLambdaJは必要ありません。 LambdaJは主に素晴らしいコレクションメソッドを提供するライブラリであり、Java <8をターゲットとしています。Java 8 Lambdasとは関係ありません。 –

答えて

4

問題は、生のコレクションを使用しているときに、どのような種類のオブジェクトであるのかわからないということです。

List<Integer> list = new ArrayList<>();

変更

List list = new ArrayList();

JVMは、今ではIntegerオブジェクトのコレクションを介してストリーミングだと理解しています。

+0

私はそれが思ったよりも意味があります。 – ryekayo

関連する問題