У меня есть два следующих метода: method1 и method2:
public void method1(){
List<Integer> p = ...
listRefCtl.forEach(x->
x.getDomains().forEach(domain ->
domaine.getRisks().forEach(risk ->
attribution.getFicheControles().removeIf(fc ->
!DateUtil.isBetween(fc.getT().getDateT(), p.get(0), p.get(1)))))
)
)
);
}
public void method2(){
List<Integer> p = ...
listRefCtl.forEach(x->
x.getDomains().forEach(domain ->
domaine.getRisks().forEach(risk ->
attribution.getFicheControles().removeIf(fc ->
!DateUtil.isAfter(date1, date2)))
)
)
);
}
Как видите, это один и тот же фрагмент кода, за исключением того, что у меня есть два разных предиката внутри метода removeIf:
!DateUtil.isBetween(fc.getT().getDateT(), p.get(0), p.get(1))
и
!DateUtil.isAfter(date1, date2)
я хотел бы извлечь такой метод
public void method1(){
List<Integer> p = ...
extractedMethod(() -> !DateUtil.isBetween(fc.getT().getDateT(), p.get(0), p.get(1)));
}
public void method2(){
List<Integer> p = ...
extractedMethod(() -> !DateUtil.isAfter(date1, date2));
}
public void extractedMethod(predicate){
listRefCtl.forEach(x->
x.getDomains().forEach(domain ->
domaine.getRisks().forEach(risk ->
attribution.getFicheControles().removeIf(predicate)))
);
}
проблема в том, что я не знаю, как передать "f c "объект в" extractMethod "?
Заранее спасибо.