it-swarm.com.ru

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

При поиске кода я наткнулся на оператор стрелки, что именно он делает? Я думал, что у Java нет оператора со стрелкой.

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

Подробности: Java 6, Коллекция Apache Commons, IntelliJ 12

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

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

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

100
Óscar López

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

31
Anton-M

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

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

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

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

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

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

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

Car.SEDAN == ((Car)arg0).getStyle();
12
simple-thomas

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

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

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

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

0
Manasi