Mientras buscaba algún código me encontré con el operador de flecha, ¿qué hace exactamente? 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á predicando "plegando" 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();
}
});
java
intellij-idea
apache-commons
java-8
apache-commons-collection
Mike Rylander
fuente
fuente
Respuestas:
Eso es parte de la sintaxis de las nuevas expresiones lambda, que se introducirán en Java 8. Hay un par de tutoriales en línea para familiarizarse, aquí hay un enlace a uno. Básicamente,
->
separa los parámetros (lado izquierdo) de la implementación (lado derecho).La sintaxis general para usar expresiones lambda es
(Parámetros) -> {Body} donde '->' separa los parámetros y el cuerpo de la expresión lambda.
Los parámetros están encerrados entre paréntesis, de la misma manera que para los métodos, y el cuerpo de la expresión lambda es un bloque de código encerrado entre llaves.
fuente
Este también es útil cuando desea implementar una interfaz funcional
es equivalente a
fuente
Creo que esta flecha existe debido a su IDE. IntelliJ IDEA hace tal cosa con algún código. Esto se llama código plegable. Puede hacer clic en la flecha para expandirla.
fuente
Es una expresión lambda.
Significa que, de listOfCars, arg0 es uno de los elementos de esa lista. Con ese ítem que va a hacer, de ahí el ->, lo que sea que esté dentro de los corchetes.
En este ejemplo, devolverá una lista de autos que se ajustan a la condición
fuente
Nuevo operador para la expresión lambda agregado en Java 8
La expresión lambda es la forma corta de escribir el método.
Se usa indirectamente para implementar una interfaz funcional
Sintaxis primaria: (parámetros) -> {declaraciones; }
Hay algunas reglas básicas para la escritura efectiva de expresiones lambda que debe conocer.
fuente