2013-12-25 2 views
7

Я смотрел несколько уроков java и не был уверен, что «->» сделал и не смог найти что-либо в Google об этом.Что делает '->' на Java?

Вот код, который я видел, что использовал его:

myShapesCollection.stream() 
.filter(e -> e.getColor() == Color.RED) 
.forEach(e -> System.out.println(e.getName())); 
+5

Это синтаксис письма [выражение лямбда] (http://docs.oracle.com/javase/tutorial/java/javaOO/lam bdaexpressions.html), который будет включен как функция в Java 8 –

ответ

21

Это синтаксис, используемый для lambda expressions, доступный в Java 8.

Например, filter ожидает получить Predicate и e -> e.getColor() == Color.RED функционально эквивалентны до:

new Predicate<Shape>() { 
    public boolean test(Shape s) { return s.getColor() == Color.RED; } 
} 
+3

+1 Я думаю, что эквивалентный код должен быть 'new Predicate () {public boolean test (Shape e) {return e.getColor() == Цвет .RED; }} '. –

+0

Да, действительно. Спасибо. – assylias