stream()。allMatch()/ .anyMatch()メソッドでサポートされていないラムダ式[重複]

Dec 15 2020

JAVA 1.8がstream()。filter()/ allMatch()/ anyMatch()のラムダ式をサポートしていない理由がわかりません。

例えば ​​:

EclipseIDEからのエラースニペット

import java.util.*; 
  
class GFG { 
      
    // Driver code 
    public static void main(String[] args) { 
          
    // Creating a list of Integers 
    List<Integer> list = Arrays.asList(3, 4, 6, 12, 20); 
      
    // Check if all elements of stream 
    // are divisible by 3 or not using  
    // Stream allMatch(Predicate predicate) 
    boolean answer = list.stream().allMatch(n-> n % 3 ==0); 
      
    // Displaying the result 
    System.out.println(answer); 
} 
} 

「トークン "-"、-expected」の構文エラーと「n」の下の赤い線としてEclipseでエラーが発生します。この問題を理解して解決するのを手伝ってください。

#NOTE:Eclipse 3.8、JAVA 8(1.8.0_271)を使用しています

回答

ErezBenHarush Dec 15 2020 at 01:59

あなたのコードはコンパイルされて実行されているようです https://www.tutorialspoint.com/compile_java_online.phpこれはJava1.8.0_141を実行します。Eclipseのターゲット実行時間がjava8に設定されているかどうかを確認します。

例として、EclipseのTargetJREを使用できます。