1. 程式人生 > 實用技巧 >Groovy中如何向已有的類新增新方法

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

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

  1. MOP(meta object protocol) -- 詳見 ExpandoMetaClass
  2. 擴充套件方法 -- GDK採用的此方法
  3. Category 註解 -- 影響範圍可控
  4. Mixin

下面看下程式碼:

/**
 * @author :ZackZhou
 * @date :Created in 2020/10/20 10:27 AM
 * @description :如何向已有的類中新增新的方法
 * @modified By:
 * @version:
 */

//MetaClass
String.metaClass.Say = { String words ->
    println delegate 
+ words } "Hello ".Say("World") //使用Category @Category(String) class SayAgain{ //必須是方法,不能是closure def SayWhat(String words) { println delegate + words } } use(SayAgain){ "Hello ".SayWhat("World") } // Mixin class NewMethodProvider{ def SaySomething = { words -> println delegate
+ words } } 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