gpt4 book ai didi

Java - 在没有 lambda 表达式的情况下使用谓词

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:06:37 24 4
gpt4 key购买 nike

我有以下要求:-

员工.java

public boolean isAdult(Integer age) {
if(age >= 18) {
return true;
}
return false;
}

Predicate.java

    private Integer age;
Predicate<Integer> isAdult;

public PredicateAnotherClass(Integer age, Predicate<Integer> isAdult) {
this.age = age;
System.out.println("Test result is "+ isAdult(age));
}

public void testPredicate() {
System.out.println("Calling the method defined in the manager class");

}

现在我的目标是使用 Employee 类中定义的方法测试我传递给 Predicateage 是否为成人,为此,我正在传递方法引用,该方法引用是我在 Predicate 类的构造函数中传递的。

但我不知道如何调用 Employee 类中定义的方法,下面是我的测试类:-

public class PredicateTest {

public static void main(String[] args) {
PredicateManager predicateManager = new PredicateManager();

PredicateAnotherClass predicateAnotherClass = new PredicateAnotherClass(20, predicateManager::isAdult);
predicateAnotherClass.testPredicate();;
}
}

我在 System.out.println("Test result is "+ isAdult(age)); predicate 类中遇到编译错误。

让我知道如何解决这个问题。如果我需要提供任何其他信息。

最佳答案

这看起来有点可疑,如果员工是成年人,您关心,所以您的方法应该真正采用 Employee作为参数和 Predicate<Employee> ,像这样:

 private static void testEmployee(Employee emp, Predicate<Employee> predicate) {
boolean result = predicate.test(emp);
System.out.println(result);
}

这个方法的用法是:

testEmployee(new Employee(13), emp -> emp.isAdult(emp.getAge()));

关键是您也可以将此方法用于其他 谓词,假设您想测试性别或收入等。

关于Java - 在没有 lambda 表达式的情况下使用谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44583847/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com