lambda表达式如何与Predicate一起使用?

Kan*_*rai 3 java lambda java-8

我需要更多关于lambda表达式的说明.怎么'p'代表List<Person> people?你能解释清楚吗?

List<Person> people = new ArrayList<>();
people.add(new Person("Mohamed", 69));
people.add(new Person("Doaa", 25));
people.add(new Person("Malik", 6));
Predicate<Person> pred = (p) -> p.getAge() > 65;
Run Code Online (Sandbox Code Playgroud)

Tun*_*aki 6

不,p不是一个List<Person>而是一个Person.

Predicate<Person> pred = p -> p.getAge() > 65;
Run Code Online (Sandbox Code Playgroud)

这个lambda表达式声明了1个形式参数并返回一个boolean.因此,它可以表示为Predicate(因为Predicate接口具有带有此精确签名的单一功能方法,称为test).类型p将由Predicate您创建的类型决定.

例如,在以下代码中,p将是List<Person>:

Predicate<List<Person>> predicate = p -> p.isEmpty();
Run Code Online (Sandbox Code Playgroud)

  • @KannanThangadurai`(p)`,与`p`相同,(在这种情况下不需要括号)是lambda表达式的形式参数.我建议你阅读关于lambda表达式的[这个Oracle教程](https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html). (2认同)