que - prioridad de operadores en java
¿Qué hace el operador de flecha, ''->'', en Java? (4)
Creo que esta flecha existe debido a su IDE. IntelliJ IDEA hace tal cosa con algún código. Esto se llama plegado de código. Puede hacer clic en la flecha para expandirlo.
Mientras buscaba algún código, me encontré con el operador de flecha, ¿qué es exactamente lo que hace? Pensé que Java no tenía un operador de flecha.
return (Collection<Car>) CollectionUtils.select(listOfCars, (arg0) -> {
return Car.SEDAN == ((Car)arg0).getStyle();
});
Detalles : Java 6, Apache Commons Collection, IntelliJ 12
Actualización / Respuesta: Resulta que IntelliJ 12 es compatible con Java 8, que es compatible con lambdas, y está "doblando" Predicados y mostrándolos como lambdas. A continuación se muestra el código "sin plegar".
return (Collection<Car>) CollectionUtils.select(listOfCars, new Predicate() {
public boolean evaluate(Object arg0) {
return Car.SEDAN == ((Car)arg0).getStyle();
}
});
Es una expresión lambda.
Significa que, de la lista de Cajas, arg0 es uno de los elementos de esa lista. Con ese objeto que va a hacer, de ahí el ->, lo que sea que esté dentro de los corchetes.
En este ejemplo, él devolverá una lista de autos que se ajustan a la condición
Car.SEDAN == ((Car)arg0).getStyle();
Eso es parte de la sintaxis de las nuevas expresiones lambda, que se presentará en Java 8. Hay un par de tutoriales en línea para entenderlo, aquí hay un link a uno. Básicamente, el ->
separa los parámetros (lado izquierdo) de la expresión real (lado derecho).
Este también es útil cuando desea implementar una interfaz
Runnable r = ()-> System.out.print("Run method");
es equivalente a
Runnable r = new Runnable() {
@Override
public void run() {
System.out.print("Run method");
}
};