Groovy Beans 是 JavaBeans ,但是用了一种更为简单的语法.
如下示例:
import java.util.Date


class Customer
{
// properties
Integer id
String name
Date dob
// sample code

static void main(args)
{
customer = new Customer(id:1, name:"Gromit", dob:new Date())
println("Hello ${customer.name}")
}
}
结果:
Hello Gromit
注意,那些properties看起来就象是public fields. 在Groovy里你也可以把properties 放入Bean的构造方法中.在Groovy中,fields和properties已经合并故他们用起来并无不同. 因此,上面的Groovy代码和下面的Java代码是相同的:
import java.util.Date;


public class Customer
{
// properties
private Integer id;
private String name;
private Date dob;

public Integer getId()
{
return this.id;
}

public String getName()
{
return this.name;
}

public Date getDob()
{
return this.dob;
}

public void setId(Integer id)
{
this.id = id;
}

public void setName(String name)
{
this.name = name;
}

public void setDob(Date dob)
{
this.dob = dob;
}
// sample code

public static void main(String[] args)
{
Customer customer = new Customer();
customer.setId(1);
customer.setName("Gromit");
customer.setDob(new Date());
println("Hello " + customer.getName());
}
}
Property和field规则
当Groovy程序被编译成字节码,下面的规则将被遵循.
* 如果property是private的,那么就用一个Java field来表示.
* 如果声明了一个public或者protected的property(properties缺省是public的), 那么一个public或者protected的getter和setter与相应的private的Java field一同被创建出来.
* 如果你没有为public或者proteced的properties显示地声明getter与setter,他们一样会在字节码一级被自动创建.
* 如果你创建了一个public或者protected的property,那么你可以重载那些被自动创建的方法. 举一个例子,你能够创建一个只读的property或者一个带有protected setter的 public read-only property,如下:

class Foo
{
// read only property
private String name

public String getName()
{ return name }
// read only property with protected setter
Integer amount

protected void setAmount(Integer amount)
{ this.amount = amount }
// dynamically typed property
cheese
}
