Groovy类型定义

时间:2012-10-28 23:36:13

标签: groovy

class GroovyClass {
  def aVariable

  void setAVariable(aVariable)
  {
      this.aVariable  = aVariable;
  }
}

我的理解是我们不需要在groovy类中指定变量的类型。但是如果我声明'aVariable',Groovy编译器会抱怨,为什么它不被视为具有默认可访问性的无类型变量?是否应该使用Groovy中的def定义每个变量本地和类?为什么函数定义不必以def开头?当我将变量传递给setter时,它不需要任何def吗?

1 个答案:

答案 0 :(得分:0)

该代码工作正常。你是什​​么意思“Groovy编译器抱怨”

如果需要,您可以使用def定义该函数,它将返回aVariable(因为这是赋值操作符返回的内容),但是,它不会遵循Java Bean的标准在setters中应该返回null

但鉴于此,我可以运行:

a = new GroovyClass()
a.aVariable = 3

它工作正常

修改

基本上,这完全取决于Groovy解析器。解析器期望某种类型的1..N关键字列表定义它的类型或可见性,然后是变量的名称。所以以下都是有效的:

class OkA {
  def aValue
}

class OkB {
  private aValue
}

class OkC {
  private String aValue
}

但你不能只(用当前的解析器)说:

class BadA {
  aValue
}

考虑到这一点,我现在没有理由想到这个限制(因为你可以在Groovy中声明没有def的变量),但是存在限制,所以你需要输入def在定义类属性时。