我有这样的代码:
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”的执行 Package 到一个checker对象中,该对象将执行其他一些副作用。我还需要将“op”的输入和输出 Package 到proprer checkrequest和checkresponse中,以传递和获取额外的数据。但是,为了返回“op”的原始结果,我需要checkresponse中的getoperationresponse()方法。听起来很简单。
上面的代码按预期工作,但是,如果我将其“内联”为:
return checker.apply(chkReq ,op).getOperationResponse();
我得到了
不兼容的类型:java.lang.object无法转换为[b的实际类型]
如果方法调用是内联的,为什么不能正确推断getoperationresponse()的返回类型?
我使用的是oracle的openjdk11:
implementor=“oracle corporation”implementor\u version=“18.9”java\u version=“11”java\u version\u date=“2018-09-25”
windows 10上的intellij idea 2018.3和maven 3.5.4。
1条答案
按热度按时间ffx8fchx1#
你需要确保你的
checker
定义如下:以下是一些基本的假定完整类:
响应模型:
请求模型:
然后你对方法的完整定义可以是
我可以确认以上的作品我很好的语法。