为什么Java看不到接口方法?

时间:2021-08-01 13:41:46

标签: java oop lambda interface callback

我需要连接两个函数和一个消费者。 为此,我创建了一个新接口 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));
    }
}

0 个答案:

没有答案