豆沙包

          …… …… 所學 所寫 所想 所做 所悟…… ……

          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 閱讀(494) 評論(0)  編輯  收藏 所屬分類: Groovy


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 广平县| 竹北市| 建宁县| 巩留县| 龙州县| 自贡市| 广丰县| 襄垣县| 金寨县| 台北县| 永清县| 姜堰市| 平果县| 南投市| 明星| 泽州县| 印江| 互助| 黑山县| 滦南县| 河西区| 石家庄市| 休宁县| 台安县| 道真| 咸阳市| 祁阳县| 突泉县| 曲麻莱县| 芦山县| 泉州市| 蒲城县| 泰顺县| 贡山| 新安县| 比如县| 肥东县| 南川市| 襄垣县| 宿松县| 会同县|