Ini adalah Fase 2 dari JEP 302 , yang akan menambahkan garis bawah sebagai karakter khusus untuk menunjukkan parameter yang tidak digunakan dalam ekspresi lambda.
Pengobatan garis bawah
Dalam banyak bahasa, adalah umum menggunakan garis bawah ( _) untuk menunjukkan parameter lambda tanpa nama (dan juga untuk metode dan parameter pengecualian):
BiFunction<Integer, String, String> biss = (i, _) -> String.valueOf(i);
Hal ini memungkinkan pemeriksaan statis yang lebih kuat atas argumen yang tidak digunakan, dan juga memungkinkan beberapa argumen ditandai sebagai tidak digunakan. Namun, karena garis bawah adalah pengenal yang valid pada Java 8, kompatibilitas mengharuskan kami untuk mengambil jalur yang lebih tidak langsung untuk mencapai tempat garis bawah dapat menjalankan peran ini di Java. Fase 1 melarang garis bawah sebagai nama parameter formal lambda di Java 8 (ini tidak memiliki konsekuensi kompatibilitas, karena lambda tidak ada sebelumnya) dan peringatan dikeluarkan untuk menggunakan garis bawah sebagai pengenal di tempat lain. Tahap 2 datang di Java 9, saat peringatan ini menjadi error. Kami sekarang bebas untuk menyelesaikan rehabilitasi garis bawah yang direncanakan untuk menunjukkan lambda, metode, atau parameter formal catch yang tidak digunakan.
_tidak akan diizinkan sebagai nama pengenal hukum dan tidak hanya sebagai nama parameter lambda. Ini sebenarnya telah diperbaiki dalam build 43: bugs.openjdk.java.net/browse/JDK-8061549