First they ignore you
          then they ridicule you
          then they fight you
          then you win
              -- Mahatma Gandhi
          Chinese => English     英文 => 中文             
          隨筆-221  評(píng)論-1047  文章-0  trackbacks-0
          由于Java一種單繼承的語(yǔ)言,即子類(lèi)只能繼承一個(gè)父類(lèi),所以無(wú)法重用兩個(gè)類(lèi)的實(shí)現(xiàn),Groovy在這方面做了些改進(jìn),引入了Mixin

          現(xiàn)在讓我們看一下Groovy中的Mixin的威力吧:


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

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

          File類(lèi) 已經(jīng)繼承了Object類(lèi) ,但它通過(guò)Groovy中Mixin,重用了FileCategory類(lèi)中l(wèi)eftShfit方法的實(shí)現(xiàn),
          其相關(guān)細(xì)節(jié)說(shuō)明已經(jīng)注于代碼中,希望大家喜歡 :)

          未來(lái)Groovy的Mixin實(shí)現(xiàn):http://docs.codehaus.org/display/GroovyJSR/Mixins


          而從Groovy1.6beta-2-snapshot開(kāi)始, Groovy支持如下寫(xiě)法:

          // ?改自官方例子
          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 山風(fēng)小子 閱讀(3390) 評(píng)論(5)  編輯  收藏 所屬分類(lèi): Groovy & Grails
          主站蜘蛛池模板: 高阳县| 普格县| 东乡县| 乐昌市| 夏邑县| 蚌埠市| 本溪| 永清县| 通江县| 新平| 德安县| 青州市| 北流市| 沾益县| 金秀| 中卫市| 尉犁县| 宜宾市| 潮安县| 石渠县| 永新县| 岳西县| 静海县| 大关县| 永顺县| 湖州市| 科技| 东安县| 玛纳斯县| 台江县| 垣曲县| 永兴县| 尼勒克县| 安阳县| 南汇区| 宝丰县| 攀枝花市| 哈密市| 晋城| 尚义县| 淮安市|