_ (trait de soulignement) est un mot clé réservé
J'ai juste remplacé s
dans la suite de la lambda expression par _
:
s -> Integer.parseInt(s)
Eclipse compilateur dit:
'_' ne doit pas être utilisé comme identifiant, puisque c'est un mot clé réservé à partir du niveau de la source de 1,8.
Je n'ai pas trouvé d'explication dans le JLS §3.9 Lexicale Structure /mots-clés.
OriginalL'auteur Aubin | 2014-05-07
Vous devez vous connecter pour publier un commentaire.
L'endroit à regarder est JLS §15.27.1. Lambda Paramètres
Donc l'Éclipse message est trompeur, surtout que le même message est utilisé pour les deux cas, lorsqu'une erreur est générée pour un paramètre lambda ou lorsqu'un avertissement est généré pour toute autre
_
identificateur._
sera rejetée comme tout identificateur juridique des noms et pas seulement comme un paramètre lambda nom. Cela a été corrigé dans le build 43 : bugs.openjdk.java.net/browse/JDK-8061549N'est-ce pas “les Futures versions du langage de programmation Java peut se réserver ce nom comme un mot-clé et/ou le donner spéciale de la sémantique” déclaration assez? Eh bien, remplacer “réserve” par “utilisera”, et vous obtiendrez de l'image. Peut-être que ce mail de référence aide à...
Qu'est-ce que cela? Java rupture de rétro-compatibilité?
Torres Sánchez: c'est rien de nouveau. Il y avait des moments où
enum
etassert
étaient légales identifiants...effectivement il ya des tonnes de langues dont le trait de soulignement comme un nom réservé (Scala, Clojure, F#, SML, Erlang, pour n'en nommer que quelques-uns). C'est un modèle établi qui remonte aux années 90 ou 80, je crois, ainsi que de désobéir, il est étrange.
OriginalL'auteur Holger
C'est la Phase 2 de JEP 302, qui va ajouter un trait de soulignement comme un caractère spécial pour désigner les paramètres inutilisés dans les expressions lambda.
OriginalL'auteur Alexandre de Champeaux
Langage Java Changements pour Java SE 9
https://docs.oracle.com/javase/9/language/toc.htm#JSLAN-GUID-16A5183A-DC0D-4A96-B9D8-AAC9671222DD
De Java 9, _ de caractère ne peut pas être utilisé comme identificateur de plus, non seulement au sein de la lambda contexte
OriginalL'auteur Angel Koh