У меня есть такой код:
public interface Checker<A,B> extends BiFunction<CheckRequest<A>,Function<A,B>,CheckResponse<B>> { // ... }
public class CheckResponse<B> {
private B operationResponse;
//...
public void setOperationResponse(B operationResponse) {
this.operationResponse = operationResponse;
}
public B getOperationResponse() {
return operationResponse;
}
}
и такой метод:
public B execute(A req){
CheckRequest<A> chkReq = //...
chkReq.setOriginalRequest(req);
Function<A,B> op = //...
CheckResponse<B> chkRes= checker.apply(chkReq ,op)
// [...]
return chkRes.getOperationResponse();
}
Я хочу завершить выполнение "op"в объект проверки, который будет выполнять некоторые другие побочные эффекты.Мне также нужно обернуть ввод и вывод «op» в proprer CheckRequest и CheckResponse, чтобы передать и получить дополнительные данные.Но затем, чтобы вернуть исходный результат для «op», мне нужен метод getOperationResponse () в CheckResponse.Звучит просто.
Приведенный выше код работает, как и ожидалось, но, если я "встраиваю" его, он выглядит так:
return checker.apply(chkReq ,op).getOperationResponse();
Я получил
несовместимых типов: Java.lang.Object не может быть преобразован в [фактический тип B]
Почему возвращаемый тип getOperationResponse () не выводится правильно, если вызовы методов встроены?
Я используюOpenJDK11 из Oracle:
IMPLEMENTOR = "Корпорация Oracle" IMPLEMENTOR_VERSION = "18,9" JAVA_VERSION = "11" JAVA_VERSION_DATE = "2018-09-25"
Intellij IDEA 2018.3и Maven 3.5.4 в Windows 10.