def关键字在Groovy中使用更多空间吗?

时间:2014-06-03 08:13:46

标签: performance groovy

可以使用def - 用于声明变量和方法的关键字来代替对象或方法的显式类型。 使用def - 关键字是否可取?它是否使用更多内存?如果确切的类型已知,是否应该避免?

2 个答案:

答案 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