Что делает оператор стрелки,' ->', в 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();
}
});
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