假设我们有以下方法:
def myMethodWithParameters(param1, def param2, Object param3) {
...
}
Run Code Online (Sandbox Code Playgroud)
使用 def 关键字和使用 Object 作为参数类型有什么区别?
使用 def 关键字和不使用任何类型/关键字作为参数有什么区别?
到目前为止我所知道的并不能完全回答这个问题:
def关键字用于允许动态类型。所以你甚至可以Object[]在里面放一个。def关键字可用于使变量仅在当前范围内可用,而不是全局范围内可用文档的快速链接很好地解释了这一点:
\n\n\n\n\n当定义具有无类型参数的方法时,可以使用 def 但不需要它,因此我们倾向于省略它们。所以而不是:
\n\nRun Code Online (Sandbox Code Playgroud)\n\nvoid doSomething(def param1, def param2) { }\n更喜欢:
\n\nRun Code Online (Sandbox Code Playgroud)\n\nvoid doSomething(param1, param2) { }\n但正如我们在文档的最后\n部分中提到的,\xe2\x80\x99通常最好键入方法\n参数,以便帮助记录你的代码,并帮助\n IDE完成代码,或者利用 Groovy 的静态类型检查或静态编译功能。
\n
我对 Groovy 遵循的一般规则是:
\n\n如果您知道期望或返回什么类型,则将该类型放入定义中。如果只接受String,则将类型添加到参数中(与返回值相同)。对于构成“公共”API 一部分的方法(即:如果其他类或人员要使用该方法),这一点更加重要。
如果它只是内部的,或者接受一系列值类型,那么将参数保留为无类型,然后让 Groovy 对其进行排序...
\n| 归档时间: |
|
| 查看次数: |
2546 次 |
| 最近记录: |