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



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



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


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



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



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

4 ответов:

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

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

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

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

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

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

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

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

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

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

Comments

    Ничего не найдено.