मैंने http://cr.openjdk.java.net/~briangoetz/lambda/lambda-state-4.html पढ़ा है और देखा है कि सभी उदाहरणों में स्पष्ट रूप से घोषित तर्क प्रकार है, भले ही यह इंटरफ़ेस-फ़ंक्शन घोषणा से पहले से ही ज्ञात हो।जावा 8 लैम्बडा सिंटैक्स में तर्क प्रकार निर्दिष्ट करने के लिए कोई कारण हैं?
public interface FileFilter {
/** ... **/
boolean accept(File pathname);
}
FileFilter java = (File f) -> f.getName().endsWith(".java");
हम सिर्फ
(f) -> f.getName().endsWith(".java"); ?
अद्यतन साथ जाना नहीं कर सकते: JSR-335 Draft में, मैं ने पाया है कि अनुमान लगाया-प्रकार पैरामीटर सबसे
(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
कारण यह है कि उदाहरण के सबसे प्रकट पैरामीटर प्रकार इस्तेमाल किया में छोड़ दिया जाता है है, भले ही टाइप अनुमान 1 दिन से माना जाता था, पूरी तरह से शैक्षिक है। दर्शकों को सामान्य जावा डेवलपर्स माना जाता था जिन्होंने पहले इस सामग्री में से कोई भी नहीं देखा है; भेड़ के बच्चे को फेंकना * और * एक बार में उनके प्रकार का अनुमान लेना बहुत कुछ होता। –