要指定搜索条件,您可以实现 CheckPerson 接口:
interface CheckPerson { boolean test(Person p); }
然后使用它
printPersons(
roster,
new CheckPerson() {
public boolean test(Person p) {
return p.getGender() == Person.Sex.MALE
&& p.getAge() >= 18
&& p.getAge() <= 25;
}
}
);
然后
CheckPerson 接口是一个函数式接口。函数式接口是指仅包含一个抽象方法的任何接口。(一个函数式接口可能包含一个或多个默认方法或静态方法。)因为一个函数式接口只包含一个抽象方法,所以在实现它时可以省略该方法的名称。为此,您不使用匿名类表达式,而是使用 lambda 表达式,它在以下方法调用中突出显示:
printPersons(
roster,
(Person p) -> p.getGender() == Person.Sex.MALE
&& p.getAge() >= 18
&& p.getAge() <= 25
);
他们说他们省略了该方法,我在 lambda 中没有看到test- 这很清楚。但他们也删除了界面名称CheckPerson。为什么解释中没有提到呢?我们是否使用CheckPersonlambda 中的接口?
倚天杖
函数式编程
摇曳的蔷薇
相关分类