First they ignore you
          then they ridicule you
          then they fight you
          then you win
              -- Mahatma Gandhi
          Chinese => English     英文 => 中文             
          隨筆-221  評論-1047  文章-0  trackbacks-0
          由于Java一種單繼承的語言,即子類只能繼承一個父類,所以無法重用兩個類的實現,Groovy在這方面做了些改進,引入了Mixin

          現在讓我們看一下Groovy中的Mixin的威力吧:


          // ?創(chuàng)建一個Category,以重用該類中的靜態(tài)方法的實現
          class ?FileCategory?{
          ????
          // ?實現操作符(<<)重載(?<<?對應的方法為leftShift?)
          ???? static ?leftShift(self,?other)?{
          ????????
          // ?將"Hello,?"以及other中的內容寫入self表示的文件中
          ????????self.write( " Hello,?$other " )
          ????????println?
          " done! "
          ????}
          }

          // ?利用關鍵字use,使用之前創(chuàng)建的Category
          use?(FileCategory)?{
          ????
          // ?創(chuàng)建File的一個實例,?并將"Hello,?山風小子"寫入該文件中,注意不帶雙引號
          ???? new ?File( " hello.txt " )? << ? " 山風小子 "
          }

          File類 已經繼承了Object類 ,但它通過Groovy中Mixin,重用了FileCategory類中l(wèi)eftShfit方法的實現,
          其相關細節(jié)說明已經注于代碼中,希望大家喜歡 :)

          未來Groovy的Mixin實現:http://docs.codehaus.org/display/GroovyJSR/Mixins


          而從Groovy1.6beta-2-snapshot開始, Groovy支持如下寫法:

          // ?改自官方例子
          import ?java.util.concurrent.locks. *

          Object.metaClass.mixin?ReentrantLock

          def?name?
          = ? " abcdef "
          name.lock()
          try ?{
          ????println?name.isLocked()
          }?
          finally ?{
          ????name.unlock()
          }




          附:朝花夕拾——Groovy & Grails

          posted on 2007-11-27 22:16 山風小子 閱讀(3390) 評論(5)  編輯  收藏 所屬分類: Groovy & Grails
          主站蜘蛛池模板: 安平县| 灵璧县| 德化县| 会同县| 富宁县| 五莲县| 文山县| 临颍县| 江口县| 盐边县| 岑溪市| 博湖县| 财经| 建瓯市| 浠水县| 佛山市| 长沙市| 扬州市| 炎陵县| 翼城县| 库车县| 茂名市| 舟山市| 平罗县| 绿春县| 伊金霍洛旗| 深水埗区| 兴安盟| 四川省| 五莲县| 礼泉县| 响水县| 宝兴县| 垣曲县| 华安县| 岳阳县| 黔西县| 南郑县| 乌鲁木齐市| 大同县| 耿马|