Groovy中如何向已有的類新增新方法

2022-07-08 21:12:12 字數 1351 閱讀 4293

groovy 中有多種途徑實現向原有類新增方法,具體有如下幾種:

mop(meta object protocol) -- 詳見 expandometaclass

擴充套件方法 -- gdk採用的此方法

category 註解 -- 影響範圍可控

mixin

下面看下**:

/**

* @author

:zackzhou

* @date :created in 2020/10/20 10:27 am

* @description :如何向已有的類中新增新的方法

* @modified by:

* @version:

*///

metaclass

string.metaclass.say =

"hello ".say("world")

//使用category

@category(string)

class

sayagain

}use(sayagain)

//mixin

class

newmethodprovider

}string.mixin(newmethodprovider)

"hello ".saysomething("world")

//新增擴充套件方法,gdk中使用的就是此方法,dgm -- defaultgroovymethods

/** 步驟:

* 1. 建立自己的類

* 2. 在 meta-info/services 檔案控制代碼裡面加入 此類的全路徑, 如下:

* modulename=regina-marshal

moduleversion=1.0

extensionclasses=regina.marshal

staticextensionclasses=

* 3. 將此專案打成jar

* 4. 使用者引入此jar 即可

* */

//建議使用優先順序: category class > meta class > mixin

//delegate -- 不能向已有的無法更改的類新增方法,但是可以在新加的類中使用,用來將別的類的方法 新增到新的類中,本質上是 編譯器 將別的類的例項加入到了此類中,然後定義相同名字的方法,呼叫原來類的方法

class

human

}class

women

}women women = new women(human: new

human())

women.say("yes")

women.birth()

如何將已有的資源新增到如今工程中

在mfc程式設計中,為了節約時間,方便操作,有時候需要將現有工程的資源直接拿來為正在編寫的工程服務。設有工程a,現在要新建乙個工程b,在b要見乙個和a裡面一樣的的資源,比方說對話方塊資源,為了避免重現建立帶來的各種重複和麻煩,我們可以直接引用a中編輯好的資源,從而大大節省了時間,具體步驟如下 1 在...

MTK 中如何新增菜已有選單

前幾天,上面給我一任務,把一已存在的選單放到另外幾處去!本以為會很簡單的 有現成的例子,也做過fugui 想想就知道,這樣想往往會眼高手低,居然做了兩天了,我大汗哎呀,臉紅的要命。先bs一下自己!注意了,下面就進入話題了!同學,這位同學,說你呢,就你,看什麼看,不要說話了,現在已經上課了。mtk中會...

如何將CUDA 匯入已有的C 工程中

yes i did,and it is working.create c project project right click build customisation check cuda 7.0 compiler addcudart.libto properties linker input a...