2015-06-07 25 views
10

Nel seguente esempio di codice che cosa fa il :: fare:Cosa fa :: operatore Java in questo contesto?

public static void main(String[] args) { 

    List<Integer> l = Arrays.asList(1,2,3,4,5,6,7,8,9,10);  

    Integer s = l.stream().filter(Tests::isGT1) 
         .filter(Tests::isEven) 
         .map(Tests::doubleIt) 
         .findFirst() 
         .orElse(100);   
    System.out.println(s);  
} 


private static boolean isGT3(int number){ 
    return number > 3; 
} 

private static boolean isEven(int number){ 
    return number % 2 ==0; 
}  
private static int doubleIt(int number){ 
    return number * 2; 
} 

risposta

24

Questi sono method references. E 'solo un modo più semplice per scrivere un lambda expression:

.map(Tests::doubleIt) 

è equivalente a

.map(i -> Tests.doubleIt(i)) 

È inoltre possibile fare riferimento a metodi di istanza utilizzando someObject::someMethod, o anche per costruttori con SomeClass::new.

+1

Oops. Sì. Risolto adesso, grazie. –