我有以下要求:-
员工.java
public boolean isAdult(Integer age) {
if(age >= 18) {
return true;
}
return false;
}
谓词.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");
}
现在我的目标是测试是否age我传递给Predicate
是成年人或未使用中定义的方法Employee
class ,我为其传递方法引用,该方法引用是在构造函数中传递的Predicate
class.
但我不知道如何调用中定义的方法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));
in the predicate
class.
让我知道如何解决这个问题。如果我需要提供任何其他信息。
这看起来有点可疑,你care如果员工是成年人,那么你的方法确实应该采取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()));
问题是你可以重用这个方法other还有谓词,假设您想测试性别或收入等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)