使用泛型在双功能中实现AND和OR方法

时间:2019-04-19 22:24:51

标签: java arrays generics java-8

我正在尝试像我们在谓词中一样在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)-> {'

1 个答案:

答案 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)