В настоящее время я работаю над реализацией SpecialList
отложенного потока, и мне необходимо реализовать функцию плоской карты.
public <R> SpecialList<R> flatMap(Function<T, SpecialList<R>> mapper) {
return new SpecialList<R>(() -> mapper.apply(this.content));
}
Это означает, что я бы взял функцию типа T и вернул быSpecialList типа R.
Однако я получаю эту ошибку:
SpecialList.java:43: error: no suitable constructor found for SpecialList(()->mapper[...]y(ts))
return new SpecialList<R>(() -> mapper.apply(this.content));
^
constructor SpecialList.SpecialList(R) is not applicable
(argument mismatch; R is not a functional interface)
constructor SpecialList.SpecialList(Supplier<R>) is not applicable
(argument mismatch; bad return type in lambda expression
SpecialList<R> cannot be converted to R)
where R,T are type-variables:
R extends Object declared in method <R>flatMap(Function<T,SpecialList<R>>)
T extends Object declared in class SpecialList
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
1 error
У меня есть конструктор SpecialList (), принимающий значение, но так как мой возвращаемый тип теперь 'R 'это, кажется, не работает, и они говорят, что подходящего конструктора не найдено.
Разве тип' R 'не должен быть заменен и стать Т в конструкторе? Почему это дает мне эту ошибку?