Tôi đã đọc http://cr.openjdk.java.net/~briangoetz/lambda/lambda-state-4.html và nhận thấy rằng tất cả các ví dụ có loại đối số được khai báo một cách rõ ràng, mặc dù nó đã được biết đến từ khai báo chức năng giao diện.Có bất kỳ lý do nào để xác định loại đối số được yêu cầu trong cú pháp lambda Java 8 không?
public interface FileFilter {
/** ... **/
boolean accept(File pathname);
}
FileFilter java = (File f) -> f.getName().endsWith(".java");
chúng tôi không thể đi với chỉ
(f) -> f.getName().endsWith(".java"); ?
CẬP NHẬT: Trong JSR-335 Draft, tôi đã tìm thấy rằng các thông số suy ra kiểu có thể sẽ được hỗ trợ
(int x) -> x+1 // Single declared-type parameter
(int x) -> { return x+1; } // Single declared-type parameter
(x) -> x+1 // Single inferred-type parameter
x -> x+1 // Parens optional for single inferred-type case
Lý do mà hầu hết các ví dụ sử dụng các loại tham số biểu hiện, mặc dù suy luận kiểu được xem xét từ ngày 1, hoàn toàn là sư phạm. Khán giả được cho là các nhà phát triển Java thông thường, những người chưa từng thấy bất kỳ tài liệu nào trước đây; ném lambdas * và * loại suy luận vào họ trong một đi sẽ có được rất nhiều để tham gia. –