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

Sim*_*eon 3 java generics interface

最近在一个答案中,有人向我建议:

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

    public R execute(P param);
}
Run Code Online (Sandbox Code Playgroud)

比这更好:

public interface Operation {

    public OperationResult execute(OperationParam param);
}
Run Code Online (Sandbox Code Playgroud)

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

鉴于这两个OperationResultOperationParam是接口的实现者需要返回反正派生类中,这似乎很明显我.

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

biz*_*lop 6

这样,您可以声明您的Operation实现以返回更具体的结果,例如

 class SumOperation implements Operation<SumResult, SumParam>
Run Code Online (Sandbox Code Playgroud)

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

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