假设我们有以下方法:
def myMethodWithParameters(param1, def param2, Object param3) {
...
}
使用def关键字和使用Object作为参数的类型有什么区别?
使用def关键字与不使用任何类型/关键字作为参数之间有什么区别?
到目前为止我所知道的并没有完全回答这个问题:
def
关键字用于允许动态类型。
所以你甚至可以在里面放一个Object[]
。def
关键字可用于使变量仅在当前范围内可用,而不是全局答案 0 :(得分:3)
快速link to the docs,它可以很好地解释这一点:
使用无类型参数定义方法时,可以使用def但是 它不需要,所以我们倾向于省略它们。所以而不是:
void doSomething(def param1, def param2) { }
体型:
void doSomething(param1, param2) { }
但正如我们在最后提到的那样 在文档的一部分,通常最好键入您的方法 参数,以帮助记录您的代码,也有帮助 用于代码完成的IDE,或用于利用静态类型检查的IDE 或Groovy的静态编译功能。
我跟随Groovy的一般规则是:
如果您知道您期望或返回的类型,请将该类型放在定义中。如果您只接受String
,请将类型添加到参数(与返回值相同)。对于构成公共"公共"的一部分的方法,这是双倍的。 API(即:如果其他类或人员将使用该方法)。
如果它只是内部的,或者接受一系列值类型,那么让参数保持无类型,让Groovy对其进行排序......