Я думаю, вам понадобится Function<T,R>
перед использованием Predicate
:
Есть две концепции для функции. Первый - это java.util.function.Function
, который принимает один аргумент и выдает результат . Вторая - это карта промежуточных операций потока, которая преобразует каждый элемент в stream в другой объект с помощью предоставленной функции.
В вашем случае Function
должен выглядеть следующим образом :
Function<DWHDeal, DWHDealDTO> myFunction = new Function<DWHDeal, DWHDealDTO>() {
public DWHDealDTO apply(DWHDeal t) {
return ... ;
}
};
Я попробовал основную программу c, как показано ниже:
static class DWHDeal{
String name;
public DWHDeal(String name) {
this.name = name;
}
}
static class DWHDealDTO{
String name;
public DWHDealDTO(String name) {
this.name = name;
}
}
static Predicate<DWHDealDTO> companyFilter = i -> i.name.equalsIgnoreCase("com");
public static void main(String[] args) {
Function<DWHDeal, DWHDealDTO> myFunction = new Function<DWHDeal, DWHDealDTO>() {
public DWHDealDTO apply(DWHDeal t) {
return new DWHDealDTO("com");
}
};
DWHDeal newDWHDealDTOObj = new DWHDeal("com");
System.out.println(companyFilter.test(myFunction.apply(newDWHDealDTOObj))); //Works
}