可以使用def
- 用于声明变量和方法的关键字来代替对象或方法的显式类型。
使用def
- 关键字是否可取?它是否使用更多内存?如果确切的类型已知,是否应该避免?
答案 0 :(得分:1)
def就像对象一样。它将使用或不使用的内存量取决于变量的值。
是否使用它更多地是关于代码的安全性而不是性能。如果您知道将仅处理String或int,请定义您的变量。如果你完全不知道这个类型是什么(或者你不关心,因为你只是把快速执行和丢弃的脚本放在一起),那么可以选择def。
关于变量范围的其他细微差别也很少,但为此您最好阅读groovy documentation
HTH, 扬
答案 1 :(得分:0)
def
是动态类型变量的声明。你说你不在乎这种类型。 是更具惯用性的Groovy。
它使您可以使用流式键入。这将有效:
def d = new Date()
d = "echo"
虽然这会因GroovyCastException
:
Date d = new Date()
d = "echo"
流量输入可在@TypeChecked
下执行:
@groovy.transform.TypeChecked
def test() {
def d = new Date()
d.year
d = "echo"
d.toUpperCase()
}
所有Groovy方法调用都将通过MOP。如果存在瓶颈,可能是这个人,而不是您使用的参考类型。如果需要考虑性能,请在检测到较慢的方法和/或类时考虑使用@CompileStatic
。