【发布时间】:2025-12-21 14:25:06
【问题描述】:
我正在检查一些简单的 Lambda 表达式,我在互联网上找到了以下示例,它应该可以工作。
不幸的是,NetBeans 8.0.1 似乎不喜欢 (Person p) -> p.getAge() < 18) 和 .map((Person p) -> p.getName()) 行中的代码
显示错误“lambda 表达式中的参数类型不兼容”。
任何人有一个想法我该如何解决这个问题?
public class Lambda {
private enum Gender {
MALE, FEMALE
};
public static class Person {
private final String name;
private final int age;
private final Gender gender;
public Person(String name, int age, Gender gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public Gender getGender() {
return gender;
}
}
public static void main(String[] args) {
List<Person> persons = new ArrayList<>();
persons.add(new Person("angelo", 50, Lambda.Gender.MALE));
persons.add(new Person("paolo", 10, Lambda.Gender.MALE));
persons.add(new Person("giuseppe", 5, Lambda.Gender.MALE));
persons.add(new Person("andrea", 22, Lambda.Gender.FEMALE));
persons.add(new Person("guglielmo", 2, Lambda.Gender.FEMALE));
printNames(persons,
(Person p) -> p.getAge() < 18);
}
private static void printNames(List<Person> persons, Predicate predicate) {
persons.stream()
.filter(predicate)
.map((Person p) -> p.getName())
.sorted()
.forEach(name -> System.out.println(name));
}
}
【问题讨论】:
-
不相关,但“person”的复数形式是“people”,因此“peoples”不是最好使用的字段名称。
标签: java netbeans lambda java-8