我需要连接两个函数和一个消费者。 为此,我创建了一个新接口 FunctionToConsumer,在其中实现了 atLast 方法。
但是 atLast 方法是不可见的。
error: cannot find symbol
someFunc(a.andThen(b).atLast(end));
^
symbol: method atLast(Consumer<JSONObject>)
location: interface Function<String,JSONObject>
FunctionToConsumer<String, JSONObject> a = (result) -> {
JSONObject toReturn = null;
try {
JSONObject toReturn = new JSONObject((String) result);
} catch (JSONException e) {
e.printStackTrace();
}
return toReturn;
};
FunctionToConsumer<JSONObject, JSONObject> b = (result) -> {
return result;
};
Consumer<JSONObject> end = (result) ->{
//some code;
}
someFunc(a.andThen(b).atLast(end));
public interface FunctionToConsumer<T, R> extends Function<T, R> {
// default Consumer<T> andThen(Consumer<R> after) {
// Objects.requireNonNull(after);
// return (T t) -> {after.accept(apply(t));};
// }
default Consumer<T> atLast(Consumer<R> consumer) {
Objects.requireNonNull(consumer);
return (T t) -> consumer.accept(apply(t));
}
}