在一个通用的界面中有好处吗?

时间:2011-02-09 10:36:58

标签: java generics interface

最近在answer,有人向我建议:

public interface Operation<R extends OperationResult, P extends OperationParam> {

    public R execute(P param);
}

比这更好:

public interface Operation {

    public OperationResult execute(OperationParam param);
}

然而,在第二个代码块中使用第一个代码块时,我看不出任何好处......

鉴于OperationResultOperationParam都是接口,实现者无论如何都需要返回派生类,这对我来说似乎很明显。

那么你是否看到使用第一个代码块而不是第二个代码块的任何原因?

1 个答案:

答案 0 :(得分:6)

通过这种方式,您可以声明Operation实现以返回更具体的结果,例如

 class SumOperation implements Operation<SumResult, SumParam>

虽然这对您的应用程序是否有任何价值,但完全取决于具体情况。

更新:当然,如果没有通用界面,您可以返回更具体的结果,但这样您也可以限制输入参数。