最近在answer,有人向我建议:
public interface Operation<R extends OperationResult, P extends OperationParam> {
public R execute(P param);
}
比这更好:
public interface Operation {
public OperationResult execute(OperationParam param);
}
然而,在第二个代码块中使用第一个代码块时,我看不出任何好处......
鉴于OperationResult
和OperationParam
都是接口,实现者无论如何都需要返回派生类,这对我来说似乎很明显。
那么你是否看到使用第一个代码块而不是第二个代码块的任何原因?
答案 0 :(得分:6)
通过这种方式,您可以声明Operation
实现以返回更具体的结果,例如
class SumOperation implements Operation<SumResult, SumParam>
虽然这对您的应用程序是否有任何价值,但完全取决于具体情况。
更新:当然,如果没有通用界面,您可以返回更具体的结果,但这样您也可以限制输入参数。