Есть ли причины, по которым в синтаксисе лямбд Java 8 требуется указывать тип аргумента?

Я прочитал http://cr.openjdk.java.net/~briangoetz/lambda/lambda-state-4.html и заметил, что во всех примерах тип аргумента объявлен явно, хотя он уже известен из объявления функции интерфейса.

public interface FileFilter {
    /** ... **/
    boolean accept(File pathname);
}


FileFilter java = (File f) -> f.getName().endsWith(".java");

Не можем ли мы обойтись просто

(f) -> f.getName().endsWith(".java"); ?

UPDATE: JSR-335 Draft, я обнаружил, что параметры типа inferred скорее всего будут поддерживаться

(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 

5
задан Boris Treukhov 18 January 2012 в 11:53
поделиться