在Java的StreamAPI的使用中,我出现了以下问题:
employees.stream().map(e -> e.getName()).filter(name -> name.length() > 3).forEach(System.out :: println);
上面的两个Lambda表达式中,我将map参数改成Employee::getName没问题,但是我将filter参数改成String::length > 3
却显示编译错误,这是为什么呢?
希望有人可以帮我解答一下,万分感激。
filter 里边是一个 Predicate函数表达式 , 返回应该是一个boolean值 , name -> name.length() > 3 这就是 Predicate 的写法 , String::length 这个是 Function的写法
你写成String::length,到底指的是哪个字符串,filter里面一般都是判断语句
filter里面不是判断么,正常应该返回一个boolean类型,String::length这个返回是个int类型,肯定编译不过啊