我正在尝试像我们在谓词中一样在Bifunction中实现'and'和'or'方法。
因此,我的双功能功能接口有一个抽象方法-将两个对象作为参数并返回一个列表。
我尝试过:
public interface TriFunctionInterface<T, U, R> {
List<R> applyFilter(T t, U u, List<R> r);
default TriFunctionInterface or(TriFunctionInterface other) {
Objects.requireNonNull(other);
return (T t, U u, List<R> r) -> {
List<R> finalList = new ArrayList<>();
List<R> filteredObjects1 = applyFilter(t, u, r);
List<R> filteredObjects2 = other.applyFilter(t, u, r);
finalList.addAll(filteredObjects1);
finalList.addAll(filteredObjects2);
return finalList;
};
}
}
但这行似乎给我一个错误:'return(T t,U u,List r)-> {'
答案 0 :(得分:0)
似乎给我一个错误
它确实给出了错误,提示:
Error:(11, 16) java: incompatible types: incompatible parameter types in lambda expression.
此错误是由您的方法使用原始类型而不是适当的泛型类型引起的。应该是
default TriFunctionInterface<T, U, R> or(TriFunctionInterface<T, U, R> other)