我正在浏览公共链的代码
我找到了很多方法签名,类似于这个:
public <CMD extends Command<K, V, C>> CMD getCommand(String commandID)
这个签名有何不同之处:
public Command getCommand(String commandID)
我能理解的唯一合乎逻辑的理由是进行类型检查.但我仍然无法从设计的角度弄清楚这样做的原因.
是否有更多理由可以使用和扩展 java方法的返回类型?
区别有三倍:
作为一种类型化方法,java 可以推断类型
所有这一切都意味着这将编译(无需强制转换):
Command<String, Integer, String> x = getCommand(commandID);
Run Code Online (Sandbox Code Playgroud)
或者
SomeTypedSubClassOfCommand x = getCommand(commandID);
Run Code Online (Sandbox Code Playgroud)
编译器将根据结果分配给的变量的类型来推断(即找出)方法的类型。
此外,您可以使用以下语法显式指定子类:
Command<String, Integer, String> x = ContainingClass.<CommandSubClass<String, Integer, String>>getCommand(commandID);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
198 次 |
| 最近记录: |