Lambda表達式中類型推斷,是java7中引入目標類型推斷的拓展。
java7中的菱形操作符,使javac推斷處反省參數的類型。
/**
* lambda表達式中類型推斷
*/
public static void targetType() {
// new HashMap<String, Integer>指定泛型類型
Map<String, Integer> wordcounts = new HashMap<String, Integer>();
// 使用菱形操作符<>,new HashMap<>不用明確泛型類型,編譯器就可以推斷出。
Map<String, Integer> diamond = new HashMap<>();
// 傳遞方法參數,根據形式參數做類型推斷
targerTpyeMethod(new HashMap());
// lambda表達式類型推斷,函數接口必須指明泛型類型,其他類型可以不用指明,可以進行推斷。
Predicate<Integer> atLeast = x -> x > 5;
// The operator > is undefined for the argument type(s) Object, int
Predicate wrongLeast1 = x -> x > 5;
// Lambda expression's parameter x is expected to be of type Object
Predicate wrongLeast2 = (Integer x) -> x > 5;
}
private static void targerTpyeMethod(Map<String, String> values){
}