【发布时间】:2016-01-15 12:39:06
【问题描述】:
就我的工作需要而言,我对 Groovy 相当精通,但没有 OOP 方面的背景意味着我仍然无法理解某些事情,所以如果这里的某些措辞有点离题,请见谅(如果您愿意,请随时编辑可以让问题更清晰)。
我正在尝试创建一个重载方法,其中签名(理想情况下)仅在单个 Closure 参数的返回类型上有所不同。 Closure 包含一个方法调用,该方法调用返回一个 ItemResponse 或 ListResponse 对象,这两个对象都可以包含任何类型的对象/对象(这是我想推断的类型)。
以下代码是我尝试实现的简化版本 - 一种错误处理方法,它引用服务调用,安全地尝试解决它,并根据需要从响应中返回项目/项目:
public <T> T testMethod(Closure<ItemResponse<T>> testCall) {
testCall.call().item as T
}
public <T> List<T> testMethod(Closure<ListResponse<T>> testCall) {
testCall.call().items as T
}
显然这行不通,但是否有任何替代方法/解决方法可以达到预期结果?
【问题讨论】: