È la fase 2 di JEP 302 , che aggiungerà un carattere di sottolineatura come carattere speciale per indicare i parametri inutilizzati nelle espressioni lambda.
Trattamento delle sottolineature
In molte lingue, è comune utilizzare un carattere di sottolineatura ( _
) per denotare un parametro lambda senza nome (e in modo simile per i parametri di metodo ed eccezione):
BiFunction<Integer, String, String> biss = (i, _) -> String.valueOf(i);
Ciò consente un controllo statico più efficace degli argomenti inutilizzati e consente inoltre di contrassegnare più argomenti come non utilizzati. Tuttavia, poiché il carattere di sottolineatura era un identificatore valido a partire da Java 8, la compatibilità ci richiedeva di prendere un percorso più indiretto per arrivare al punto in cui il carattere di sottolineatura poteva svolgere questo ruolo in Java. La fase 1 proibiva il carattere di sottolineatura come nome di parametro formale lambda in Java 8 (ciò non ha avuto conseguenze sulla compatibilità, poiché lambda non esistevano in precedenza) ed è stato emesso un avviso per l'utilizzo del carattere di sottolineatura come identificatore in altre posizioni. La fase 2 è arrivata in Java 9, quando questo avviso è diventato un errore. Siamo ora liberi di completare la riabilitazione pianificata del carattere di sottolineatura per indicare un lambda, un metodo o un parametro formale non utilizzato.
_
non sarà consentito come nomi di identificatori legali e non solo come nome di parametro lambda. Questo problema è