豆沙包

…… …… 所学 所写 所想 所做 所悟…… ……

Groovy Beans

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
}

posted on 2005-02-24 09:49 carob 阅读(485) 评论(0)  编辑  收藏 所属分类: Groovy


只有注册用户登录后才能发表评论。


网站导航: