Что делает оператор стрелок "->" в Java?

Во время охоты через какой-то код я наткнулся на оператор стрелки, что именно он делает? Я думал, что у Java нет оператора стрелок.

return (Collection<Car>) CollectionUtils.select(listOfCars, (arg0) -> {
        return Car.SEDAN == ((Car)arg0).getStyle();
});

Подробности: Java 6, сборник Apache Commons, IntelliJ 12

Update/Answer: Оказывается, IntelliJ 12 поддерживает Java 8, которая поддерживает lambdas и является "сворачиванием" Predicates и отображает их как lambdas. Ниже приведен "не сложенный" код.

return (Collection<Car>) CollectionUtils.select(listOfCars, new Predicate() {
    public boolean evaluate(Object arg0) {
        return Car.SEDAN == ((Car)arg0).getStyle();
    }
});

Ответ 1

Эта часть синтаксиса новых лямбда-выражений, которые будут введены в Java 8. Есть несколько онлайн-руководств, чтобы получить ее, здесь ссылка. В принципе, -> разделяет параметры (слева) от фактического выражения (правая сторона).

Ответ 2

Я считаю, эта стрелка существует из-за вашей среды IDE. IntelliJ IDEA делает это с некоторым кодом. Это называется сгибанием кода. Вы можете щелкнуть по стрелке, чтобы развернуть ее.

Ответ 3

Это полезно, когда вы хотите реализовать интерфейс

Runnable r = ()-> System.out.print("Run method");

эквивалентно

Runnable r = new Runnable() {
            @Override
            public void run() {
                System.out.print("Run method");
            }
        };

Ответ 4

Это выражение лямбда.

Это означает, что из listOfCars arg0 является одним из элементов этого списка. С этим пунктом он будет делать, следовательно, → , все, что находится внутри скобок.

В этом примере он собирается вернуть список автомобилей, которые соответствуют условию

Car.SEDAN == ((Car)arg0).getStyle();

Ответ 5

Новый оператор для лямбда-выражения добавлен в Java 8

Лямбда-выражение - это короткий способ написания метода.
Это косвенно используется для реализации функционального интерфейса

Основной синтаксис: (параметры) → {операторы; }

Есть несколько основных правил для эффективного написания лямбда-выражений, которые вы должны знать.