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)
然而,在第二个代码块中使用第一个代码块时,我看不出任何好处......
鉴于这两个OperationResult和OperationParam是接口的实现者需要返回反正派生类中,这似乎很明显我.
那么你是否看到使用第一个代码块而不是第二个代码块的任何原因?
这样,您可以声明您的Operation实现以返回更具体的结果,例如
class SumOperation implements Operation<SumResult, SumParam>
Run Code Online (Sandbox Code Playgroud)
虽然这对您的应用程序是否有任何价值,但完全取决于具体情况.
更新:当然,如果没有通用接口,您可以返回更具体的结果,但这样您也可以限制输入参数.
| 归档时间: |
|
| 查看次数: |
193 次 |
| 最近记录: |