2017-02-20 14 views
7

は、私は、変数sizeが正しく計算され、次のラムダ式のJava/Eclipseの「ラムダ式は、評価式で使用することはできません」

int size = ((List<?>) receipt.getPositions().stream().filter(item -> true).collect(Collectors.toList())).size() 

を書きました!

「ラムダ:

しかし、私はそれを点検してみてください(はCtrl + Shiftキー + 私は)またはEclipseの式で式の結果を見てみビュー、私は次のエラーを取得します式は評価式」

enter image description here

で使用することができないような発現の結果を見る代わりにするために、他の機会がありますそれを変数に格納しますか?

P.S:私が働き、このための簡単な解決策は、あなたのラムダは匿名クラスの作成に変換することでJavaの8とEclipseのneon.2

+1

インターネット検索エンジンを使用している場合、「ラムダ式は評価式で使用できません」というエラーメッセージが表示されます。基本的な答えはノーですが、将来的にはそうかもしれません。 –

+2

また、collect(...)の代わりにcount()を使うのはなぜですか?size()? –

+0

'receipt.getPositions()。size()'を使うだけです。これは問題なくデバッガによって評価することができます。 – Holger

答えて

0

を使用しています。必要なインタフェースの変数を作成すると、デバッグ可能な式が得られます。

Predicate<Object> predicate = new Predicate<Object>() { 
     @Override 
     public boolean test(Object item) { 
      return true; 
     } 
    }; 
    int size = ((List<?>) receipt.getPositions().stream().filter(predicate).collect(Collectors.toList())).size(); 

あなたがラインに立っている場合は「int型のサイズ= ...」デバッグしながら、今、あなたは次の結果を表示することができます

((List<?>) receipt.getPositions().stream().filter(predicate).collect(Collectors.toList())).size() 

を、私はそれが役に立てば幸い:)

関連する問題