¿Qué hace el operador de flecha, ‘->’, en Java?

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) 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) CollectionUtils.select(listOfCars, new Predicate() { public boolean evaluate(Object arg0) { return Car.SEDAN == ((Car)arg0).getStyle(); } }); 

Eso es parte de la syntax de las nuevas expresiones lambda, que se presentará en Java 8. Hay un par de tutoriales en línea para entenderlo, aquí hay un enlace a uno. Básicamente, el -> separa los parámetros (lado izquierdo) de la expresión real (lado derecho).

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.

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"); } }; 

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();