Đó là Giai đoạn 2 của JEP 302 , sẽ thêm dấu gạch dưới làm ký tự đặc biệt để biểu thị các tham số không sử dụng trong biểu thức lambda.
Xử lý dấu gạch dưới
Trong nhiều ngôn ngữ, người ta thường sử dụng dấu gạch dưới ( _
) để biểu thị một tham số lambda không được đặt tên (và tương tự cho các tham số phương thức và ngoại lệ):
BiFunction<Integer, String, String> biss = (i, _) -> String.valueOf(i);
Điều này cho phép kiểm tra tĩnh mạnh mẽ hơn đối với các đối số không sử dụng và cũng cho phép nhiều đối số được đánh dấu là không sử dụng. Tuy nhiên, vì dấu gạch dưới là một mã định danh hợp lệ của Java 8, nên khả năng tương thích yêu cầu chúng ta thực hiện một con đường gián tiếp hơn để đến nơi dấu gạch dưới có thể phục vụ vai trò này trong Java. Giai đoạn 1 là cấm dấu gạch dưới làm tên tham số chính thức lambda trong Java 8 (điều này không có hậu quả tương thích, vì lambdas không tồn tại trước đó) và cảnh báo đã được đưa ra vì sử dụng dấu gạch dưới làm số nhận dạng ở những nơi khác. Giai đoạn 2 đến trong Java 9, khi cảnh báo này trở thành lỗi. Bây giờ chúng tôi có thể hoàn thành việc khôi phục theo kế hoạch của dấu gạch dưới để chỉ ra một tham số chính thức, phương thức hoặc lambda chưa được sử dụng.
_
sẽ không được phép sử dụng dưới dạng bất kỳ tên định danh hợp pháp nào và không chỉ là tên tham số lambda. Điều này thực sự đã được khắc phục trong bản dựng 43: bug.openjdk.java.net/browse/JDK-8061549