En cherchant dans un code, je suis tombé sur l'opérateur de flèche, que fait-il exactement? Je pensais que Java n'avait pas d'opérateur de flèche.
return (Collection<Car>) CollectionUtils.select(listOfCars, (arg0) -> {
return Car.SEDAN == ((Car)arg0).getStyle();
});
Détails: Java 6, Apache Commons Collection, IntelliJ 12
Mise à jour/Réponse: Il se trouve qu'IntelliJ 12 supporte Java 8, qui supporte lambdas, et "replie" les prédicats et les affiche sous la forme lambdas. Ci-dessous se trouve le code "non plié".
return (Collection<Car>) CollectionUtils.select(listOfCars, new Predicate() {
public boolean evaluate(Object arg0) {
return Car.SEDAN == ((Car)arg0).getStyle();
}
});
Cela fait partie de la syntaxe des nouvelles expressions lambda, à introduire dans Java 8. Il existe quelques tutoriels en ligne pour vous aider à comprendre, voici un lien à un . Fondamentalement, le ->
sépare les paramètres (à gauche) de l'expression réelle (à droite).
Je crois que cette flèche existe à cause de votre IDE. IntelliJ IDEA fait une chose pareille avec du code. Ceci s'appelle le pliage de code. Vous pouvez cliquer sur la flèche pour l'agrandir.
Celui-ci est également utile lorsque vous souhaitez implémenter une interface.
Runnable r = ()-> System.out.print("Run method");
est équivalent à
Runnable r = new Runnable() {
@Override
public void run() {
System.out.print("Run method");
}
};
C'est une expression lambda.
Cela signifie que, dans listOfCars, arg0 est l'un des éléments de cette liste. Avec ce point, il va faire, d’où le ->, tout ce qui est à l’intérieur des crochets.
Dans cet exemple, il va retourner une liste de voitures qui correspondent à la condition
Car.SEDAN == ((Car)arg0).getStyle();
Nouvel opérateur pour l'expression lambda ajoutée à Java 8
L’expression Lambda est le moyen court d’écriture de méthode.
Il est indirectement utilisé pour implémenter interface fonctionnelle
Syntaxe primaire: (paramètres) -> {instructions; }
Il y a quelques règles de base règles pour l’écriture efficace des expressions lambda que vous devriez connaître.