Реализация методов И и ИЛИ в Бифункциях с использованием Общих - PullRequest
0 голосов
/ 20 апреля 2019

Я пытаюсь реализовать методы 'и' и 'или' в Bifunction так, как мы это делаем в предикатах.

Итак, мой функциональный интерфейс бифункциональности имеет один абстрактный метод - который принимает два объекта в качестве аргументов и возвращаетсписок.

Я пробовал это:

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 голосов
/ 22 апреля 2019

, кажется, выдает ошибку

Это действительно выдает ошибку, которая говорит:

Error:(11, 16) java: incompatible types: incompatible parameter types in lambda expression. 

Эта ошибка вызвана тем, что ваш метод использует необработанные типы вместо правильных универсальных типов. Должно быть

default TriFunctionInterface<T, U, R> or(TriFunctionInterface<T, U, R> other)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...